Opencv与vs2012配置与相关注意问题

opencv调用方式分为静态和动态调用,我这里为动态调用,静态调用需要添加的库太多,我不是太熟悉各个库的作用。新版本的动态库只有两个dll比较简单,这里使用动态链接。

预设置

Opencv与vs2012配置与相关注意问题_第1张图片


确定MFC的使用为共享DLL,如果为静态需改为在静态库中使用MFC(若要使用release版本,这里要改运行库为正式版而不是调试版)




代码生成选项中运行库确保为DLL模式,如果使用静态链接需要改为MTD模式。


opencv设置

安装opencv,其实也就是解压过程。我这里的版本为3.0版本,解压完毕后,在系统环境变量PATH添加\opencv\build\x64\vc11\bin,这里的vc11与vs2012对应,是vc的第11版编译器,vc12代表vs2013,这样的话,opencv是不支持vs2012版本以下的。

新建OPENCV项,其值为 \opencv\build为OpenCV安装目录

其次就是对vs项目进行设置,在项目上右键,选择属性,在vc++目录里的包含目录添加include路径:opencv为老板本的c接口函数,opencv2为新版本的c++接口函数

Opencv与vs2012配置与相关注意问题_第2张图片


在库目录添加:静态改为staticlib

Opencv与vs2012配置与相关注意问题_第3张图片


再在连接器一项的输入中的附加依赖项添加:

Opencv与vs2012配置与相关注意问题_第4张图片


若使用静态链接需要添加以下库(不全)不带opencv前缀的都需要添加


3.0版本已经没有legacy了,故将此项去掉

Opencv与vs2012配置与相关注意问题_第5张图片

名字里的d代表debug版,如果是release要将d去掉。

包含的时候只需要包含D:\opencv\build\include\opencv2下的opencv.hpp即可

opencv各个lib库作用:

opencv_core :core函数库(基本的数据结构,架构和线性代数,DFTxml yam i/o接口   函数等) 

opencv_imgproc :-图像处理函数库(滤波,高斯模糊,形态学膨胀/腐蚀,线性缩放图像大 小,图像几何变化,颜色结构变化,计算直方图等)

opencv_highgui :GUI,图像和视频窗口函数库

opencv_ml :统计机器学习模型函数库(SVM,决策树,级联等) 

opencv_features2d :二维特征检测器和描述子函数库(SURF,FAST 等,包括一种新的特征 描述子匹配结构) 

opencv_video :动态分析和物体追踪函数库(光流法,移动模板,背景消除)

opencv_objdetect :图像目标检测函数库(haar小波 & LBP人脸检测和识别,HOG人检测 等) 

opencv_calib3d :摄像头标定,视觉匹配和三维数据处理函数库 

opencv_flann :近似最近领域搜索库和OpenCV分装器 

opencv_contrib :最新贡献但不是很成熟的函数库 

opencv_legacy :过时代码,为了后续代码兼容性而存在

opencv_gpu :用CUDA来加速一些openCV函数的类库(相对不太稳定,但对openCV 发非常有帮助)



ps:附加依赖项,库目录,包含目录等的作用:

包含目录:#include <headerfile.h>中headerfile.h的搜索目录。
如果有XXX.h找不到,设置这个目录可以解决。
附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。
所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附加链接库中设置。
其实,一般的库会用#pragma comment(lib,"xxx.lib") 来设置
这个过程出错会出现link error,大概是“未定义的函数XXX”。
库目录:就是寻找.lib文件的目录。
如果设置错误,会link error,提示"找不到XXX.lib"。

你可能感兴趣的:(opencv,vs2012)