方块糖的工坊
方块糖的工坊

opencv在vs2012下重编译详细教程——解决按f11进入不了源代码

最近用到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下生成工程文件

http://img.blog.csdn.net/20141030104251046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpNjY0OTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

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

在C:/svn/opencvproject找到Opencv.Sln,打开如下图

这里首先点开Debug处的小三角选择配置管理器,如果INSTALL未选择则选中,然后确定;右键ALL_BUILD生成debug版的工程文件,10分钟左右,完成后切换到Realease右键ALL_BUILD生成。

http://img.blog.csdn.net/20141030105509569?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpNjY0OTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

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_objdetect246d.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不同,包含的库目录不同
http://img.blog.csdn.net/20141029150107457?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpNjY0OTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

6.测试项目

到项目中设置断点,按f11看能否跳进opencv代码内部
http://img.blog.csdn.net/20141029150258906?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpNjY0OTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

来自为知笔记(Wiz)
没有标签
首页      心得体会      opencv在vs2012下重编译详细教程——解决按f11进入不了源代码
  • 博主,您好,我按照您的步骤来,按F11后 出现 无可永远,没有可用于当前位置的源代码,不知道怎么回事

    6年前
  • 并且,运行是没有错误的,但是但不调试的时候 调用堆栈处 显示:

    6年前
  • opencv_world300d.dll!0f9b2afd()
    [下面的框架可能不正确和/或缺失,没有为 opencv_world300d.dll 加载符号]

    6年前

方块糖的工坊

opencv在vs2012下重编译详细教程——解决按f11进入不了源代码
最近用到opencv人脸识别的代码,想进源码看看实现过程,大家都知道opencv的源码在opencv/modules下,但是光看那么长的源代码实在麻烦,要是能在调试的时候按f11直接就能跟进内部代码就好…
扫描二维码继续阅读
2015-05-19