Cmake编译Opencv+VS2010项目嵌入

利用Cmake编译Opencv3.3.0并将build文件引入vs2010工程,以实现项目可以在无需配置opencv环境的新机器上正常运行。

任务需求:

1.根据所需运行环境重新编译opencv源代码,比如不同操作系统(包括x86x64等)、不同VS版本等需求;

2.实现opencv库的一次性配置,避免重复针对不同环境查找添加运行库DLL和静待库LIB的操作;

3.实现项目迁移之后,不需要重新安装或配置opencv运行环境的情况,打开exe应用程序就可以运行

实现思路:

1.下载opencv源码:https://opencv.org/releases/

注意对应版本,这里使用windows版本的,下载完成之后直接运行,extract得到一个opencv文件夹,其中的sources就是后边要用到的。
 

新建文件夹opencv_build用于存放编译后的内容。 

下载与上边对应版本(比如前边的3.4.6)的opencv_contrib:https://github.com/opencv/opencv_contrib/releases 并解压。

2.下载安装cmake并安装,这里就不多说了,自行百度。

3.打开cmake,如下图所示,选择源码位置,即第一步的sources位置,选择build位置,即第一步创建的opencv_build位置。

 点击cmake中的Configure按钮。如下图,下拉单选择vs2010,点击finish,开始漫长等待。

可能会报错,如下图所示之类的,因为编译过程中是需要联网下载一些文件的,但是由于网络或者其他原因连接不到资源造成,可通过查看下方输出框中红色字体部分,查找错误原因,根据自己的原因来解决相应问题,然后重新来到这一步。

 

找到OPENCV_EXTRA_MODULES_PATH的参数,将其value设置为前边解压的opencv_contrib的路径下的modules子文件夹。这里如果不需要cuda就去掉WITH_CUDA后边的勾。

再次点击configure,等待……直到configure done,点击Generate,然后generate done。


4.进入之前build的opencv_build目录,VS2010打开工程文件OpenCV.sln,根据自己需要选择DEbug版本或者Realease版本。

 然后在 解决方案'OpenCV'(128个项目)上右键重新生成解决方案,等待……

一般会报错,比如有118个成功,5个失败等等。大多是因为前边cmake部分没有处理好的遗留问题。

这里说一下我遇到的错误:

“vgg_generated_120.i”: No such file or directory.

“boostdesc_bgm.i”: No such file or directory.

解决办法:将boostdesc_bgm.i、boostdesc_bgm_bi.i、boostdesc_bgm_hd.i、boostdesc_binboost_064.i、boostdesc_binboost_128.i、boostdesc_binboost_256.i、boostdesc_lbgm.i、vgg_generated_120.i、vgg_generated_64.i、vgg_generated_80.i、vg g_generated_48.i这些文件复制到..\opencv_contrib-3.3.0\modules\xfeatures2d\src目录下重现编译即可。(文件来源:https://download.csdn.net/download/u013569930/11286429 需要的私信或评论留下邮箱,邮箱发给你

还有一个找不到"cuda.h"之类的的错误,好像是因为头文件索引路径找不到该文件,方法很多:改绝对路径或者修改cmakelist中的路径,或者复制到他能找的路径下都可以。


5.至此完成opencv编译工作,接下来将编译后的opencv库引入到我们的工程。

进入之前build的opencv_build目录,将install目录下:

a.将build的下:build\install\include文件夹复制到工程目录下。

b.将build的下:build\install\x86\vc10\lib文件夹复制到工程目录下。


文件夹拷贝到工程目录下,如下:

6. 打开待配置project,项目属性中实现:

a.在项目中添加包含目录:
	$(SolutionDir)include
	$(SolutionDir)include\opencv
	$(SolutionDir)include\opencv2
b.在项目中添加库目录:
	$(SolutionDir)lib
	$(SolutionDir)lib\lib

7.项目属性中,链接器中添加 以下附加依赖项:

opencv_aruco330d.lib
opencv_bgsegm330d.lib
opencv_bioinspired330d.lib
opencv_calib3d330d.lib
opencv_ccalib330d.lib
opencv_core330d.lib
opencv_datasets330d.lib
opencv_dpm330d.lib
opencv_face330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_fuzzy330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_line_descriptor330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_phase_unwrapping330d.lib
opencv_photo330d.lib
opencv_plot330d.lib
opencv_reg330d.lib
opencv_rgbd330d.lib
opencv_saliency330d.lib
opencv_shape330d.lib
opencv_stereo330d.lib
opencv_superres330d.lib
opencv_surface_matching330d.lib
opencv_text330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
opencv_xobjdetect330d.lib
opencv_xphoto330d.lib

8.项目属性中更改输出目录为宏OUTDIR

从之前编译的opencv_build目录的install目录下(build\install\x86\vc10\bin)寻找以下动态链接库: 

opencv_core330d.dll
opencv_highgui330d.dll
opencv_imgcodecs330d.dll
opencv_imgproc330d.dll
opencv_ml330d.dll
opencv_videoio330d.dll

用到新的库再继续添加库,不仅仅限于这几个。

并复制到程序运行的debug目录下。 

9.重新生成并运行。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值