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

目录
相关文章
|
1月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
69 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
147 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
28天前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
2月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
2月前
|
机器学习/深度学习 Java 计算机视觉
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
本文记录了使用mingw81_64编译OpenCV 4.5.5、Qt 5.15.2、VTK 9.1的详细过程,包括编译结果截图、编译步骤、遇到的问题及其解决方案,以及相关参考链接。文中还提到了如何编译boost源码为静态库,并提供了测试代码示例。
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
|
1月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
347 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
50 4
|
2月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
3月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
110 1