[OpenCV3.0] 编译opencv_contrib模块

简介: [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的配置大总结

目录
相关文章
|
20天前
|
Ubuntu 编译器 C++
Ubuntu系统下编译OpenCV4.8源码
本文档介绍了在Ubuntu系统下编译和安装OpenCV4.8的简单步骤:首先,通过wget命令下载源码包,然后解压;接着,安装必要的编译器和第三方库支持;最后,在源码目录创建build文件夹,执行cmake和make安装。整个过程包括下载、安装依赖和编译安装三个主要步骤。
25 6
|
20天前
|
C语言 计算机视觉
opencv 编译objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output
opencv 编译objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output
16 0
|
20天前
|
计算机视觉 Windows
OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法
OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法
20 0
|
20天前
|
并行计算 Ubuntu Linux
Ubuntu 20.04 Anaconda的简单使用以及虚拟环境中编译使用 OpenCV 4.11源码
Ubuntu 20.04 Anaconda的简单使用以及虚拟环境中编译使用 OpenCV 4.11源码
197 0
|
20天前
|
Ubuntu 计算机视觉 C++
Ubuntu 20.04 编译 Opencv 4.11,详细步骤(带图)及报错解决,我的踩坑之旅~
Ubuntu 20.04 编译 Opencv 4.11,详细步骤(带图)及报错解决,我的踩坑之旅~
928 0
|
20天前
|
机器学习/深度学习 自然语言处理 算法
OpenCV主要功能及模块介绍(1)
OpenCV主要功能及模块介绍(1)。
39 2
|
20天前
|
算法 测试技术 计算机视觉
Opencv(C++)系列学习---opencv_contrib安装
Opencv(C++)系列学习---opencv_contrib安装
|
20天前
|
Ubuntu 计算机视觉
百度搜索:蓝易云【ubuntu下简单编译opencv教程。】
通过按照以上步骤进行,你应该能够成功在Ubuntu系统下编译和安装OpenCV。请注意,具体的步骤可能会因系统版本和OpenCV版本而有所不同。如果遇到任何问题,可以查阅OpenCV官方文档或社区寻求更多帮助。
35 0
|
20天前
|
数据安全/隐私保护 计算机视觉 开发者
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
52 0
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
|
18天前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测