最近用到opencv人脸识别的代码,想进源码看看实现过程,大家都知道opencv的源码在opencv/modules下,但是光看那么长的源代码实在麻烦,要是能在调试的时候按f11直接就能跟进内部代码就好了。说到这里大家会想为什么进不了呢?这是因为我们的程序调用opencv的函数使用的是opencv/build/x86/bin下的动态链接库,这是opencv为所有windows用户提供的,想要跟进代码就必须在本地编译生成链接库等必须文件。
本文参考了文章Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV这里讲的详细但还是有点错误,这里我来总结一下,避免大家走弯路。
1、工具
下载并安装这几个工具:CMake、OpenCV、Visualstudio
下载OpenCV:http://opencv.org/downloads.html
下载CMake:http://www.cmake.org/cmake/resources/software.html,安装
2、用CMake生成OpenCV的VS2012解决方案
首先按照下图标注,①是opencv所在目录②是接下来的工程目录(自己新建),接下来点configure按钮直到不出现红色,然后点Generate 生成工程文件,成功的话会在C:/svn/opencvproject下生成工程文件。
3、打开opencv工程并编译源代码,生成我们所需要的动态链接库
在C:/svn/opencvproject找到Opencv.Sln,打开如下图
这里首先点开Debug处的小三角选择配置管理器,如果INSTALL未选择则选中,然后确定;右键ALL_BUILD生成debug版的工程文件,10分钟左右,完成后切换到Realease右键ALL_BUILD生成。
4、配置Opencv环境变量
注意,这里也是跟上述文章不一样的地方,估计是因为OpenCV版本不同吧,导致配置上有所不同,
环境变量path应该添加以下两个路径:
C:\svn\opencvproj\bin\Debug 和 C:\svn\opencvproj\bin\Release
注:C:\svn\opencvproj\ 是我用CMake生成的VS2012工程的所在目录。
注意:之前用的是OpenCV自带编译版本的请注意了,应该将原来环境变量删除后再添加。否则调试的时候还是多多少少有些问题
5、修改工程属性
右键你的项目,选择属性,点中VC++目录,修改包含目录和库目录
1.包含目录设置为:C:\svn\opencvproj\install\include ; C:\svn\opencvproj\install\include\opencv ; C:\svn\opencvproj\install\include\opencv2(这解释了刚才为什么要勾选INSTALL了,否则是找不到install这个目录的,如果还是没有就展开工程CMakeTargets右键INSTALL分别在Debug和Realease下生成)
2.库目录设置为:C:\svn\opencvproj\lib\Debug
3.添加附加依赖项,在 链接器->输入->附加依赖项处添加:
opencv_calib3d246d.lib
opencv_contrib246d.lib
opencv_core246d.lib
opencv_features2d246d.lib
opencv_flann246d.lib
opencv_gpu246d.lib
opencv_highgui246d.lib
opencv_imgproc246d.lib
opencv_legacy246d.lib
opencv_ml246d.lib
opencv_nonfree246d.lib
opencv_contrib246d.lib
opencv_core246d.lib
opencv_features2d246d.lib
opencv_flann246d.lib
opencv_gpu246d.lib
opencv_highgui246d.lib
opencv_imgproc246d.lib
opencv_legacy246d.lib
opencv_ml246d.lib
opencv_nonfree246d.lib
opencv_objdetect246d.lib
opencv_photo246d.lib
opencv_stitching246d.lib
opencv_video246d.lib
opencv_superres246d.lib
opencv_ts246d.lib
opencv_videostab246d.lib
opencv_photo246d.lib
opencv_stitching246d.lib
opencv_video246d.lib
opencv_superres246d.lib
opencv_ts246d.lib
opencv_videostab246d.lib
这里根据自身情况来定,不同版本不同项目所需的lib文件可能不一样
这里的246d代表opencv版本是2.4.6,d代表debug版,release是不加d的,注意区分!
到这里,我们的所有配置已经完成,主要上文区别的地方在环境变量path不同,包含的库目录不同。
6.测试项目
到项目中设置断点,按f11看能否跳进opencv代码内部
发表回复