环境:Win7 x64 + Visual Studio 2013
一:概述
OpenCV3.3新增加了DNN模块,功能十分强大,可以基于已经训练好的模型数据,实现对图像的分类与图像中的对象检测在静态图像和实时视频中。下载地址为1:
OpenCV官网,
下载地址2:百度云。
选择3.3.0的
Sources
版本进行下载:
二:安装
1.CMake安装
CMake的
下载地址为:百度云,安装过程可自行百度。如果不想安装,可下载百度云里面的文件,解压后然后打开bin/cmake-gui。
2.解压OpenCV源码,并创建Build文件夹
其中1为源码解压后的文件夹,2为创建的Build文件夹。
3.打开CMake,并选择源码文件夹和Build文件夹
然后点击左下角
Configure按钮,出现下面的界面:选择编译器(我选择的是Visual Studio 12 2013 Win64)
然后点击Finish按钮,CMake开始对OpenCV源码进行配置生成并下载相应函数库(此处需要若干分钟,貌似跟网速有关系。。。)。
当第一次Configure后,界面会出现红色部分,这是为了让用户可以手动补充相应函数库,如TBB、CUDA、Eigen等,这里视你的需求而定,若需要其他库,请自行下载相应库,并自行配置库的include和lib。
本文参考博客地址的做法,即取消勾选WITH的WITH_CUDA(第一次最好不要配置CUDA版本的OpenCV3.3,因为较复杂,若配置无CUDA版本的OpenCV3.3成功后,可以再配置CUDA版的)
再次点击左下角Configure按钮,确保红色画面消失。如果红色画面一直未消失,请检查WITH选项,是否勾选了不必要的库。
4.点击Generate按钮,生成OpenCV解决方案
(1) 当多次点击Configure按钮后(一般只需要2次),红色界面完全消失,并在界面最底下出现“Configuring done”的提示;
(2) 此时请点击Generate按钮,生成相应的解决方案,若界面底下出现“Generating done“的提示,即表明解决方案生成成功;
(3) 继续点击Open Project。此时CMake会自行启动Visual studio 2013软件,打开上述生成的解决方案。
三:Visual Studio2013的配置
1.OpenCV解决方案的编译
点击Opencv Project按钮后,会自动启动VS2013,界面如下所示
(1)选择CMakeTargets项目,找到ALL-BUILD;
(2) 右击All_BUILD,然后右键>>选择生成(会消耗一段时间);
(3) 生成完成后,右击INSTALL,然后右键>>选择生成(会在自定义创建的OpenCV文件夹下生成一个install文件夹,包含了include和bin)。
ALL_BUILD右键生成时,出现下面情况好像不影响使用
2.配置OpenCV3.3动态链接库
创建一个新的VS项目:
点击项目OpenCV_TestDemo,右键选择”属性“
打开属性页面后,点击”配置管理器“
因为上述生成的是Visual Studio2013 x64的动态链接库,不适用于x86的工程,所以需要配置x64的工程,操作如下:
3.永久配置过程
找到项目的”属性管理器“,然后找到项目的Debug|x64下的Microsoft.Cpp.x64.user,右键”属性“,打开属性页面
在”包含目录中“
添加include路径,此时需要添加三个路径,即x64文件夹下的include及其子文件夹的绝对路径:
D:\OpenCV\OpenCV_VS2013_x64\install\include
D:\OpenCV\OpenCV_VS2013_x64\install\include\opencv
D:\OpenCV\OpenCV_VS2013_x64\install\include\opencv2
在”库目录“添加lib路径,即D:\OpenCV\OpenCV_VS2013_x64\install\x64\vc12\lib
配置完之后,点击”链接器“>>"输入",在”附加依赖库“中添加:
opencv_calib3d330d.lib
opencv_core330d.lib
opencv_dnn330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_photo330d.lib
opencv_shape330d.lib
opencv_stitching330d.lib
opencv_superres330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
opencv_core330d.lib
opencv_dnn330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_photo330d.lib
opencv_shape330d.lib
opencv_stitching330d.lib
opencv_superres330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
注意:OpenCV3.3一共有17个动态链接库,因为是添加的是Debug版本,所以后缀带d(如果需要配置(Release版本的,则选择不带后缀d的即可)
全部配置完成后,测试OpenCV3.3是否配置成功,并在工程目录下放置一张图片(否则需要添加图片的绝对路径)
在上述demo.cpp中写入以下代码:
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
cout << "OpenCV Version: " << CV_VERSION << endl;
Mat image = imread("img.jpg");
imshow("img", image);
waitKey(0);
return 0;
}
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
cout << "OpenCV Version: " << CV_VERSION << endl;
Mat image = imread("img.jpg");
imshow("img", image);
waitKey(0);
return 0;
}
若出现类似以下情况时,将上述dll文件复制到C:\Windows\System32即可解决(亲测有效~)
4.运行结果
(1) 输出OpenCV的版本号
(2) 显示出输入的图像
上述只是实现了OpenCV的基本配置,并没有配置CUDA;
参考博客:http://blog.csdn.net/amusi1994/article/details/76768775?locationNum=10&fps=1