opencv3.3中基于ssd算法的目标检测示例教程

环境:Ubuntu16.04 / opencv3.3

#以下命令在终端运行

环境准备:

1:安装依赖项:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2:用git下载github上的opencv3.3:
git clone git@github.com:opencv/opencv.git

3:到下载好的opencv文件夹下:
mkdir build #创建名为build的文件夹,存cmake等的文件
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. #用cmake安装(编译)opencv相关组件
make -j4#用make编译,这是最低配置要求,可以加参数-j8
sudo make install #最后的安装

至此,opencv安装完毕。

opencv3.3已经将opencv_contrib集成到opencv文件夹,所以我们要用的dnn就在opencv目录中:

##
步骤:

1:在自己的主目录下建一个test文件夹,将下载的opencv/samples/data/dnn中的rgb.jpg和samples/dnn中的ssd_object_detection.cpp复制到test文件夹

2:到https://github.com/weiliu89/caffe/tree/ssd#models 下载训练模型,我用的是VGG_VOC0712_SSD_300x300_iter_120000.caffemodel
将下载的模型放到test文件夹,并解压

3:将opencv/samples/dnn/face_detector中的test.prototxt复制到test文件夹

4:修改ssd_object_detection.cpp中的内容:

将:

修改为自己的相关参数(model,image,proto),我修改后的:

其中min_confidence为最小置信率,检测目标时置信率超过该值才打印出来(认为检测到有效目标)

 

5:将opencv/samples/cpp/example_cmake中的CMakeLists.txt复制到test文件夹,这个文件是cmake的编译配置文件,修改其中的example.cpp为ssd_object_detection.cpp

至此,需要的工具准备完成。

let’s start:

5:用cmake编译:

进入test文件夹,并在终端运行

cmake . #编译当前文件夹

make

./opencv_example #运行生成的可执行文件

 

至此所有步骤完。以下是我的运行结果:

如以上过程报错,自行百度解决

您的支持将鼓励我继续分享~