用cmake+vs2013重新编译Opencv3.0.0,将contrib编入其中

   前一段时间需要用到opencv 2.x中的nonfree.hpp,然后发现自己装的opencv3.0没有包含这个,于是得用cmake重新将oepncv编译,将contrib包加入其中。想写一篇文章来记录,之后就不用到处翻找啦。

    建议各位看客看完整篇博客后再进行操作,因为我的错误是按操作顺序来记录的xD。

前期准备:

   我使用的是opencv3.0.0,cmake用的是3.10.0,contrib包也是下的opencv_contrib3.0.0,vs版本是2013。

下面给出下载地址

opencv 3.0.0:  https://sourceforge.net/projects/opencvlibrary/files/opencv-win/

opencv_contrib 3.0.0: https://github.com/opencv/opencv_contrib/tree/3.0.0

一般来说opencv是什么版本,就对应什么版本的contrib包。cmake的话可以去官网下。

那么现在开始重新编译。

 

在cmake中进行操作:

首先打开cmake

在第一行,source code那写入opencv安装后(下载下来是一个exe文件)的路径中的sources文件路径。

第二行Where to build the binaries中填入你希望把重新编译完成的文件放入的路径,比如我希望把它放在Opencv_w_contrib中。要注意,这个目录不能含有中文

 

接下来点击左下角的Configure,会弹出这个窗口:

这里是选择编译器,因为我用的是vs2013,那么这里就选择visual studio 12 2013,其他的默认就好,最后点Finish。

如果选的编译器错误或者不存在,cmake就会报错,这时候请选择对应的编译器,然后点左上角的File-》Delete Cache将之前的缓存清空再重新来一次。

如果是显示CMAKE_C_COMPILER-NOTFOUND  那么可能是vs的模块不全,尝试修复一下vs再试试

成功之后会看到一个Configure done,表示可以进行下一步了。

会看到一片红底的文件名

先不用理会它们,找到一个叫OPENCV_EXTRA_MODULES_PATH的地方

z在这里写入解压后的opencv_contrib包中的modules文件路径,例如:E:/opencv_contrib3.0.0/modules

填好路径之后再点击Configure按钮,会发现有一部分文件名底色变为白色。

持续点击Configure按钮,直到没有红底文件名,如下图:

Config时可能会出现的错误(现在见到过的):

1.下载错误,原因是因为ocv_download函数使用时把PACKAGE错写成filename

解决方法可看此博:http://blog.csdn.net/qsy2000/article/details/70158537

 

看到全白的文件后,就可以点击Generate按钮进行生成了,当看到Generate done 的提示时,在cmake的操作就结束了。

 

接下来是在VS中的操作:

打开刚刚生成文件的目录(就是上面填的目录),找到Opencv.sln,用vs打开。

然后再在“解决方案Opencv”右键点击 “生成解决方案”

如果这时弹出一个

解决方法是:

具体说就是打开位于opencv_contrib-3.1.0\modules\bioinspired\src\opencl文件夹: 

打开retina_kernel.cl,把注释的//*********改成别的或者删掉即可。

此错误可以参照 http://blog.csdn.net/github_32886825/article/details/53347507?locationNum=6&fps=1

如果debug和release都没问题,都显示ok的话。

找到一个叫INSTALL的项目,右键-》生成,成功后会在目录中找到一个install文件夹,里面就是包含了contrib的opencv3.0.0了

请根据自己需要的是Debug还是Release进行选择。

接下来就是按照opencv2.x的办法给vs配置了

要添加的lib如下(备忘)

opencv_aruco320.lib  
opencv_bgsegm320.lib  
opencv_bioinspired320.lib  
opencv_calib3d320.lib  
opencv_ccalib320.lib  
opencv_core320.lib  
opencv_datasets320.lib  
opencv_dnn320.lib  
opencv_dpm320.lib  
opencv_face320.lib  
opencv_features2d320.lib  
opencv_flann320.lib  
opencv_fuzzy320.lib  
opencv_highgui320.lib  
opencv_imgcodecs320.lib  
opencv_imgproc320.lib  
opencv_line_descriptor320.lib  
opencv_ml320.lib  
opencv_objdetect320.lib  
opencv_optflow320.lib  
opencv_phase_unwrapping320.lib  
opencv_photo320.lib  
opencv_plot320.lib  
opencv_reg320.lib  
opencv_rgbd320.lib  
opencv_saliency320.lib  
opencv_shape320.lib  
opencv_stereo320.lib  
opencv_stitching320.lib  
opencv_structured_light320.lib  
opencv_superres320.lib  
opencv_surface_matching320.lib  
opencv_text320.lib  
opencv_tracking320.lib  
opencv_video320.lib  
opencv_videoio320.lib  
opencv_videostab320.lib  
opencv_xfeatures2d320.lib  
opencv_ximgproc320.lib  
opencv_xobjdetect320.lib  
opencv_xobjdetect320.lib  

另外,这样还有一个小缺陷,并不影响使用,就是有时候会弹出

该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

这样的警告,想要消除这个警告可以参考这个

http://blog.csdn.net/qq_36226393/article/details/77725493

到这里,就算是大功告成了

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值