【OpenCV】OpenCV3.0编译opencv_contrib模块

        在学习图像识别中的特征点检测和匹配时,需要用到一些常用的算法如FREAK、Surf和Sift算法等,但从OpenCV3以后,这些常用的算法在OpenCV的Release或Debug版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这些功能,需要自己下载缺失的的那部分源码并且重新进行OpenCV的编译编译。


一、准备工作

1 . 系统:Win7 64位

2 . opencv3.0:opencv-3.0.0下载地址,提取码:70wz

3 . opencv_contrib:opencv_contrib3.0下载地址 ,提取码:ewtx

4 . CMake-gui工具:CMake下载地址,下载完成后,直接解压即可使用,不必安装。
   在这里插入图片描述
5 . VS2012:VS2012下载地址,提取码:z36p

注意:需要根据自己的OpenCV版本,下载对应的contrib源码。本文针对的是OpenCV3.0,因此,我给的也是3.0版本的contrib源码。 因为官网(opencv_contrib的github地址)的访问不太稳定,如果大家是其他版本的OpenCV,可以到这里下载对应的contrib源码版本


二、Cmake编译

第一步静态编译(编译opencv官方库)

1、打开cmake-gui\bin目录下的cmake-gui.exe工具:
    在这里插入图片描述
2、填写相应参数:包括OpenCV源码目录(OpenCV安装路径下的Sources)和OpenCV.sln工程的导出目录(想要输出的文件夹,随意就好,不要有中文),开始导出OpenCV.sln工程
    在这里插入图片描述
    第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本,这里我用的是VS 2012:
    在这里插入图片描述
3、设置完成之后点击“Configure”,出现Configure Done代表编译成功(如果没出现或者背景是红色的,看看是不是下面我遇到过的错误可能会有帮助
    在这里插入图片描述
    再点击 “Generate”,最终出现Configure Done,Generate Done代表第一次编译成功
    在这里插入图片描述
第二步静态编译(编译我们需要的contrib库)

    第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录,我的目录是“D:/software for work/OPENCV/opencv/opencv_contrib-3.0.0/modules”:
    在这里插入图片描述
注意:直接复制可能会是"D:\ software for work\ OPENCV\ opencv\ opencv_contrib-3.0.0\ modules",需要将 \ 改成 /

   设置完成之后再分别点击“Configure” “Generate”开始生成工程(和第一步一样)
    在这里插入图片描述
   编译完成后,我们查看文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:
    在这里插入图片描述


三、用VS打开OpenCV.sln工程,编译生成Debug和Release库

1、用VS 2012打开上面的OpenCV.sln工程,在解决方案中可以查看工程目录:
    在这里插入图片描述
2、若编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别:
    在这里插入图片描述
    右键“解决方案‘OpenCV’”,选择重新生成解决方案:
    在这里插入图片描述
    在这里插入图片描述
3、找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”–>“仅生成INSTALL”
    在这里插入图片描述
    然后,在工程目录下的install目录中,可以看到生成了一堆文件
    在这里插入图片描述

四、把新的库文件配置到到项目中

    VC++目录–>包含目录,添加:
    D:\software for work\OPENCV\opencv\opencv_contrib\install\include

    VC++目录–>库目录,添加:
    D:\software for work\OPENCV\opencv\opencv_contrib\install\x86\vc11\lib
    D:\software for work\OPENCV\opencv\opencv_contrib\install\x86\vc11\staticlib

链接器–>输入–>附加依赖项,添加: (下面添加的Debug的版本,注意添加的库与编译选项要一致)

opencv_bgsegm300d.lib
opencv_bioinspired300d.lib
opencv_calib3d300d.lib
opencv_ccalib300d.lib
opencv_core300d.lib
opencv_datasets300d.lib
opencv_face300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_hal300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_latentsvm300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_optflow300d.lib
opencv_photo300d.lib
opencv_reg300d.lib
opencv_rgbd300d.lib
opencv_shape300d.lib
opencv_superres300d.lib
opencv_surface_matching300d.lib
opencv_text300d.lib
opencv_tracking300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
opencv_ximgproc300d.lib
opencv_xobjdetect300d.lib
opencv_xphoto300d.lib


错误&解决:

错误1:

1、弹出对话框Error in configuration process,project files may be invalid
在这里插入图片描述
在这里插入图片描述

  CMake Error at 3rdparty/ippicv/downloader.cmake:97 (message):
     ICV: Failed to unpack ICV package from D:/Program
     Files/opencv/sources/3rdparty/ippicv/downloads/windows-b59f865d1ba16e8c84124e19d78eec57/ippicv_windows_20141027.zip
     to D:/Program Files/opencv/sources/3rdparty/ippicv/unpack with error 1
  Call Stack (most recent call first):
     3rdparty/ippicv/downloader.cmake:108 (_icv_downloader)
     cmake/OpenCVFindIPP.cmake:212 (include)
     cmake/OpenCVFindLibsPerf.cmake:12 (include)
     CMakeLists.txt:454 (include)
        
  Configuring incomplete, errors occurred! 

解决1https://blog.csdn.net/sunshine_in_moon/article/details/46651039

注:如果下载的压缩包和自己OpenCV目录下的压缩包重名了,就将下载的压缩包改个名字在放进目录下就可以了。


错误2:

2、CMake编译之后,虽然结果出现“Configure Done” “Generate Done”,结果出现红色背景
在这里插入图片描述
解决2:一直重复点configure,直到红色背景变成白色,如下图:
知道
注:我的电脑是护眼模式,所以看到的是绿色


参考文档:
地址一:opencv+opencv_contrib编译之惨痛教训
地址二:OpenCV 3.1.0 + opencv_contrib编译(Windows)
地址三:opencv3.1+contrib的配置大总结

发布了74 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43197380/article/details/96134706