VS2010重编译OpenCV2.4.9 用于调试源代码

原地址在这里


我添加了一点东西


目录(?)[-]

  1. 工具
  2. 用CMake生成OpenCV249 的VS2010解决方案
  3. 打开opencv工程并编译源代码生成我们所需要的动态链接库
  4. 创建测试工程
    1. 1 添加新项目属性表
    2. 52 配置包含目录和库目录
    3. 3添加附加依赖项
    4. 54添加测试代码

最近想自己编译一下OpenCV源代码,以用于调试时查看源代码运行情况。

参考网上一篇文章:《Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV》 进行配置,但是错误频频。现将配置过程进行梳理,以免大家跟我一样走太多的弯路。

1、工具

下载并安装这几个工具:CMake2.8、OpenCV2.4.9、VS2010

2、用CMake生成OpenCV2.4.9 的VS2010解决方案

基本按照文章《Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV》进行操作即可。

这里点击Configure按钮,在出现的对话框中选择Visual Studio 10,同时,貌似新版本已经不需要配置TBB了,所以只需要注意:

(1)设置好源代码路径

(2)设置好生成路径

(3)点击Configure 直到没有红色栏后,点击Generate 生成项目工程即可。

VS2010重编译OpenCV2.4.9 用于调试源代码_第1张图片


3、打开opencv工程并编译源代码,生成我们所需要的动态链接库

这里注意:

(1)应该选择ALL_BUILD项目,右键进行“生成”,而不是INSTALL。

(2)分别在Debug模式和Release模式下对项目进行生成。

VS2010重编译OpenCV2.4.9 用于调试源代码_第2张图片

(3)如果生成过程中出现LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_ocl249.lib”,则说明该lib生成不成功,具体解决办法估计大同小异,可参考这篇文章(不懂cmake伤不起啊。。)。

这里我觉得作者漏掉了一个步骤,当然也没有什么关系,不过加上这一步方便一些

右键单击上图中的INSTALL目标,点击生成,这样会在目录下生成一个install目录,系统会自动把我们需要的include目录和lib目录全部复制过去,说白了就是一个复制的过程


4、配置Opencv环境变量

注意,这里也是跟上述文章不一样的地方,估计是因为OpenCV版本升级的原因,导致配置上有所不同吧,

环境变量path应该添加以下两个路径:
D:\Program Files\opencv2.4.9\vc10solution\bin\Debug  和  D:\Program Files\opencv2.4.9\vc10solution\bin\Release

注:D:\Program Files\opencv2.4.9\vc10solution 是我用CMake生成的VS2010工程的所在目录。

说明:之前用的是OpenCV自带编译版本的请注意了,应该将原来环境变量删除后再添加。我一开始没有删除导致后面一直调试不成功,即使能跟踪源代码了,但是只要函数形参是const string& 的函数,字符串就无法正常传递,调试时发现函数形参一直是<错误的指针>,无法赋值。具体原因不太懂,但折腾了一整天。


5、创建测试工程

5.1 添加新项目属性表

新建测试工程TestOpenCV,并在属性管理器中,选择Debug | Win32,右键点击 “添加新项目属性表”,并命名为opencv249x86.Debug  ,同理在Release | Win32 处新建一个项目属性表,并命名为opencv249x86.Release(PS:可将这两个项目属性表保存起来,当需要创建新工程时,直接复制到项目工程下,并添加进去就好。)

VS2010重编译OpenCV2.4.9 用于调试源代码_第3张图片

5.2 配置包含目录和库目录

双击新建的项目属性表opencv249x86.Debug,在VC++目录->包含目录,VC++目录->库目录进行设置:

VC++目录->包含目录:

D:\Program Files\opencv2.4.9\vc10solution\install\include

D:\Program Files\opencv2.4.9\vc10solution\install\include\opencv

D:\Program Files\opencv2.4.9\vc10solution\install\include\opencv2

VC++目录->库目录:

D:\Program Files\opencv2.4.9\vc10solution\lib\Debug

VS2010重编译OpenCV2.4.9 用于调试源代码_第4张图片


5.3添加附加依赖项

在 链接器->输入->附加依赖项处添加:

opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib

VS2010重编译OpenCV2.4.9 用于调试源代码_第5张图片

同理,在opencv249x86.Release 中也是类似的设置:

VC++目录->包含目录:

D:\Program Files\opencv2.4.9\vc10solution\install\include

D:\Program Files\opencv2.4.9\vc10solution\install\include\opencv

D:\Program Files\opencv2.4.9\vc10solution\install\include\opencv2

VC++目录->库目录:

D:\Program Files\opencv2.4.9\vc10solution\lib\Release

链接器->输入->附加依赖项处添加:

opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib


至此,我们的所有配置已经完成,主要与文章区别的地方在环境变量path不同,包含的库目录不同


5.4添加测试代码

[cpp]   view plain copy
  1. <span style="font-size:14px;">#include <opencv2\opencv.hpp>  
  2.   
  3. using namespace cv;  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     Mat img = imread("E:\\test\\lena.jpg");  
  8.     if(img.empty())  
  9.     {  
  10.         cout<<"error";  
  11.         return -1;  
  12.     }  
  13.     imshow("test",img);  
  14.     waitKey();  
  15.   
  16.     return 0;  
  17. }</span>  

调试模式下可以跟踪进源代码:

VS2010重编译OpenCV2.4.9 用于调试源代码_第6张图片


你可能感兴趣的:(VS2010重编译OpenCV2.4.9 用于调试源代码)