个人随笔
只言片语,汇聚于此
vs2017+opencv4.2+opencv_contrib配置教程
vs2017+opencv4.2+opencv_contrib配置踩坑记录

主要是结合了这两篇博文的方法,各有一些额外的坑没有提到。

VS2019+opencv4.2.0+opencv contrib4.2.0

opencv-contrib3.4.1编译及配置步骤,opencv_ffmpeg.dll、ippicv等失败的解决方法

  • 博主机器环境:win10 64位+vs2017

准备工作

新版cmake下载安装

OpenCV和OpenCV_contrib下载

  • 选择合适的OpenCV release版本(注意不是源代码版本!)此处是4.2release版本的github下载地址

  • 在OpenCV_contrib的github仓库的Tag里选择和OpenCV版本号相同的OpenCV_contrib源代码版本,此处是4.2版本的github下载地址

    安装OpenCV

说是安装不如说是提取,用管理员权限打开下载好的OpenCV release版本,放在合适的位置,我的路径是D:\OpenCV,会自动在选择的文件下新建一个opencv文件夹。

把opencv_contri的源代码解压到D:\OpenCV里,我们再手动新建一个build文件夹用于过会cmake编译

完成之后的样子:

image-20201219140411564

cmake配置

打开cmake,填写一下source code和build路径,然后点击左下角configure

image-20201219140807288

之后会让你选择generator,选择vs2017,下方平台选择x64。

image-20201219183749486

一般由于网络原因,会遇到很多下载不了的文件。

此时,可以给cmake命令挂个http代理,具体方法可以百度。

如果没有挂代理的话(挂代理可以跳过本段了hhh),这时候就需要手动打开D:\OpenCV\build\CMakeDownloadLog.txt查看,引用下前面参考博客老哥的原文

根据报错,解读信息:

  1. 的地址打开出错文件CMakeDownloadlog.txt。文件位置参照下图,也可以直接在安装目录搜索文件

  2. 文件具体名字,后面有版本号,一定要一一对应!!!

  3. 哈希值

  4. 下载地址

img

但是老哥说的有点复杂了,其实就是用4的地址下载,下载完的文件放在D:\OpenCV\opencv\sources\.cache里面的对应文件夹里面,并根据txt里的每个文件对应哈希值,改成文件夹里原来已有的文件名字,如下图(也是盗图)

img

然后重新configure直到没有错误,我这里只有一个不需要的VTK的错误,而且描述称可以用选项来suppress it。

那么就搜索opencv_e相关的选项,勾选opencv_enable_nonfree(不勾选的话没法使用一些申请过专利的库),

也可以勾选opencv_world(可选),会生成opencv_world.lib,不过虽然方便,但是会在实际项目中造成冗余,添加不必要的库。

填写contrib对应的路径,注意路径里的斜杠是/而不是\,否则会把‘’\O’识别成转义字符而出现解析错误。

image-20201219144550788

点击generate,静静等待generate done。应该还是有一些文件下载不成功,可以check一下是不是自己要用的,然后重复上文中的方法下载,这里没有我要用的,所以可以skip。

然后点击open project,在打开的vs2017里面点击生成-批生成。在弹出的窗口里面选择的 debug 和release的ALL_BUILD和INATALL,然后点击“生成”。

image-20201219151326616

环境+项目配置

就快要胜利了!以下引用一下另一位博主的文章,快配完才发现这个博主已经写的很详细了,但是我还是踩了几个他文章里没讲到的坑…

注意修改下方路径以及lib的版本号为自己需要的路径/版本!

配置系统环境变量

生成结束之后,需要修改环境变量。

环境变量在“此电脑”->“属性”->“高级系统设置”->“环境变量”,在用户变量里面的 Path 变量后面添加之前CMake设置的build目录\install\x64\vc16\bin,确定,退出。

如果 visual studio 在修改环境变量之前就打开了,需要重启visual studio

重新配置项目环境

visual studio 中右击项目->“属性”, img 首先可以选择“所有配置” “所有平台”,编辑包含目录和库目录 包含目录编辑为

生成的 build 目录\install\include
生成的 build 目录\install\include\opencv2

库目录编辑为:

生成的 build 目录\install\x64\vc15\lib
(vc15对应vs2017,vc16对应2019,其余版本类推)

img img img 编辑包含目录和库目录之后,需要添加附加依赖项,此时需要分别针对 debug 和release两种模式添加。 打开 生成的build目录\install\x64\vc15\lib可以发现每个lib文件都有两种,一种是以d.lib结尾,另一种只比前一种少了一个d,只以.lib结尾。debug模式需要d.lib结尾文件,release模式需要.lib结尾文件,任何一种模式配置错误,就不能以该模式运行opencv。 img 所以需要在编辑附加依赖项时添加各自需要的文件名。 img img

420debug版本的lib:

opencv_aruco420d.lib
opencv_bgsegm420d.lib
opencv_bioinspired420d.lib
opencv_calib3d420d.lib
opencv_ccalib420d.lib
opencv_core420d.lib
opencv_datasets420d.lib
opencv_dnn420d.lib
opencv_dnn_objdetect420d.lib
opencv_dpm420d.lib
opencv_face420d.lib
opencv_features2d420d.lib
opencv_flann420d.lib
opencv_fuzzy420d.lib
opencv_gapi420d.lib
opencv_hfs420d.lib
opencv_highgui420d.lib
opencv_imgcodecs420d.lib
opencv_imgproc420d.lib
opencv_img_hash420d.lib
opencv_line_descriptor420d.lib
opencv_ml420d.lib
opencv_objdetect420d.lib
opencv_optflow420d.lib
opencv_phase_unwrapping420d.lib
opencv_photo420d.lib
opencv_plot420d.lib
opencv_reg420d.lib
opencv_rgbd420d.lib
opencv_saliency420d.lib
opencv_shape420d.lib
opencv_stereo420d.lib
opencv_structured_light420d.lib
opencv_superres420d.lib
opencv_surface_matching420d.lib
opencv_text420d.lib
opencv_tracking420d.lib
opencv_video420d.lib
opencv_videoio420d.lib
opencv_videostab420d.lib
opencv_ximgproc420d.lib
opencv_xobjdetect420d.lib
opencv_xphoto420d.lib

420release版本的lib:

opencv_aruco420.lib
opencv_bgsegm420.lib
opencv_bioinspired420.lib
opencv_calib3d420.lib
opencv_ccalib420.lib
opencv_core420.lib
opencv_datasets420.lib
opencv_dnn420.lib
opencv_dnn_objdetect420.lib
opencv_dpm420.lib
opencv_face420.lib
opencv_features2d420.lib
opencv_flann420.lib
opencv_fuzzy420.lib
opencv_gapi420.lib
opencv_hfs420.lib
opencv_highgui420.lib
opencv_imgcodecs420.lib
opencv_imgproc420.lib
opencv_img_hash420.lib
opencv_line_descriptor420.lib
opencv_ml420.lib
opencv_objdetect420.lib
opencv_optflow420.lib
opencv_phase_unwrapping420.lib
opencv_photo420.lib
opencv_plot420.lib
opencv_reg420.lib
opencv_rgbd420.lib
opencv_saliency420.lib
opencv_shape420.lib
opencv_stereo420.lib
opencv_structured_light420.lib
opencv_superres420.lib
opencv_surface_matching420.lib
opencv_text420.lib
opencv_tracking420.lib
opencv_video420.lib
opencv_videoio420.lib
opencv_videostab420.lib
opencv_ximgproc420.lib
opencv_xobjdetect420.lib
opencv_xphoto420.lib

环境配好了就可以跑测试代码试一下了!

花了一天多时间用在配opencv的cpp环境,踩了无数坑,怨念太深了。GFW还是太阻碍技术进步了


最后修改于 2020-12-19

-1