VS2017+opencv3.4.1+opencv_viz模块的配置

该教程详细介绍了如何在VS2017中配置OpenCV 3.4.1的viz模块,包括安装cmake、vtk,以及编译opencv和opencv_contrib。过程中涉及的步骤包括环境变量配置、解决缺少.dll库问题等。

前言

最近工作需要在VS2017中调用opencv的3D显示模块viz,opencv3以后,opencv点安装是不会自动安装viz模块的。关于viz模块,首先要取决于opencv的版本;在opencv4.0之前的版本,对应的opencv_contrib中是没有viz模块的,则需要从vtk包中获取,即先编译vtk,再编译opencv;而opencv4.0起,viz模块被移植进opencv_contrib中了,所以只需要加上opencv_contrib编译opencv,并且还可能需要重新卸载再安装python,总之是很麻烦。下面是我的编译环境:

  • win10(64bit)
  • Visual Studio: 2017(VC15)
  • OpenCV:3.4.1
  • OpenCV_Contrib:3.4.1
  • cmake:cmake-3.20.1-windows-x86_64
  • vtk8.2

第一步:安装cmake

camke很久之前就安装了,cmake官网是:https://cmake.org/download/
具体步骤可以参考https://zhuanlan.zhihu.com/p/90810839这位知乎大神的,camke不用在意是不是最新版本,最新的反而感觉不好。

第二步:安装vtk

1)解压VTK-8.2.0.zip
2)编译vtk

具体可以参考这位

首先把VTK-8.2.0zip解压到D:/Program Files/cmake/VTK,再在VTK文件夹下新建build文件,前面的where is the source code与where to build the binaries填好后点击下面的Configue按钮,会出现选择版本界面。选择VS2017,在下面一行输入x64 点击finish 进行configure
在这里插入图片描述
过程略长,当显示Configure done 会出现红色的界面
最后并没有
这是我配置时候的设置。
选项配置:

  • 选中BUILD_SHARED_LIBS(默认)
  • 取消BUILD_EXAMPLES(默认)想学习VTK的话还是最好勾选吧
  • 取消BUILD_TESTING(默认)
  • cmake_install_prefix路径,默认C:/Program Files/VTK,我选的是D:/Program Files/cmake/VTK-8.2.0

再次点击Configure,出现Configure done后如果本来红色的界面全变白了,说明配置ok了,可以进行generate了。
点击generate。当出现Generate done后,旁边的Open Project便会显示出来。

Visual Studio编译

1.点击Open Project或者在build文件夹下找到OpenCV.sln用VS打开。
2.选择Debug或Release,默认为Debug,可以都编译出来。
3.如图,在解决方案管理器找到ALL_BUILD,点击生成,需要时间挺长的。
在这里插入图片描述
4.INSTALL点击ALL_BUILD下面的INSTALL–>>仅用于项目–>>仅生成INSTALL
install后,VTK目录(自己设置的install目录,我的是D:/Program Files/cmake/VTK-8.2.0)就有了vtk相关头文件,库文件
5.选择release,再进行一遍ALL_BUILD和INSTALL
6.进行环境配置,向系统环境变量中(Win10)的Path添加bin文件夹,我配置的为D:/Program Files/cmake/VTK-8.2.0/bin
这样VTK算是编译完了。

第三步 安装python

后面编译opencv时候需要用到这个python36_d.lib,所以最好再下载一遍,需要把最后一项勾选上,如下图。除了倒数第二项其它的最好都选上。
截图自知乎大神
只要下载好就可以了,cmake会自动搜索路径。

第四步 安装编译opencv和opencv_contrib

给出百度云的下载链接。Opencv各版本
这里给出网盘链接 opencv_contrib。里面都有github下载专用地址。

cmake编译

1.跟编译vtk所类似,第一行是opencv/sources的路径。
2.第二行是保存的路径,随意选。我选的是D:/Program Files/opencv-3.4.1/opencv-3.4.1/build,如下图
在这里插入图片描述
3.点击第一次Configure 会出现选择版本界面。选择VS2017X64,点击finish 进行配置。
4.当显示Configure done 会出现红色的界面
在这里插入图片描述
5.找到OPENCV_EXTRA_MODULES_PATH***,后面添加路径D:\Program Files\opencv-3.4.1\opencv_contrib-3.4.1\modules,精确到\modules勾选上面的OPENCV_ENABLE_NONFREE*。
6.找到WITH_VTK,,需要勾选上(默认情况下应该是勾选的)还有VTK_DIR,我这里因为下载过pcl,默认找到pcl里面的vtk8.0,实际上应该是D:\Program Files\cmake\VTK-8.2.0\lib\cmake\vtk-8.2
在这里插入图片描述
7.

  • 不用CUDA的话,最好不要选WITH_CUDA
  • 可以先勾选上BUILD_opencv_world,如果这个出错就去掉。
  • WITH_MSMF 取消勾选(我的默认取消,但4以上版本都是默认勾选)

8.再点击一次配置,这次还会出现部分红色,我把里面的opencv_xfeatures2d给取消掉勾选了,还有opencv_datasets,总之就是如果最后哪里有问题,可以在配置时候取消勾选,所以免不了配置多次。当然还有不取消勾选的解决办法的,只是比较麻烦。
9.点击生成按钮,出现Generating done说明生成完毕,可以点open project打开。
10.Visual Studio编译,过程跟编译VTK一样,

  • 分别在debug和release下编译。
  • 在解决方案管理器找到ALL_BUILD,点击生成,需要时间挺长的,如果全部成功说明在cmake下的配置是可以的,如果有失败的,最好是再从cmake编译opencv开始整,
  • 然后INSTALL点击ALL_BUILD下面的INSTALL–>>仅用于项目–>>仅生成INSTALL
  • 选择release,再进行一遍ALL_BUILDINSTALL
    在这里插入图片描述

成功后就可以进行opencv环境配置了,向系统环境变量中(Win10)的Path添加bin文件夹,我配置的为D:\Program Files\opencv-3.4.1\build\x64\vc15\bin,至于后面的添加包含目录,库目录就不说明了。
对于通用属性—>链接器—>输入—>附加的依赖项需要将…\x64\vc15\lib里的全部lib文件写进去,可以参考这篇博客,在lib目录下建一个txt文件,输入dir /b .lib>1.txt 后另存为一个*.bat文件,如下图。再双击.bat**文件,生成的1.txt文本文档里就全是lib文件名了。当然也可以参考另一篇博客
在这里插入图片描述

可能出现的问题以及解决方法:

1.缺少opencv_ffmpeg_64.dll opencv_ffmpeg.dll ffmpeg_version.cmake ippicv_2017u3_win_intel64_general_20170822等

这是由于网络原因导致未下载完,对于我的来说,在D:\Program Files\opencv-3.4.1\opencv-3.4.1.cache下,.cache下的这些文件几乎都是未下载成的,可以在D:\Program Files\opencv-3.4.1\opencv-3.4.1\build下的CMakeDownloadLog.txt查看有多少错误。里面会给出每个少的文件的下载链接,只是需要fan墙,下载后把文件放到.cache下的对应位置代替未下载完的文件,代替的话连名字都需要完全一样这里也有此问题的解决方法。这里能解决缺少boostdesc_bgm.i等文件的问题。
在这里插入图片描述
对于ffmpeg_version.cmake,复制CMakeDownloadLog.txt给的链接打开后是一个页面,可以右键点击—>另存为ffmpeg_version.cmake文件,当然保存的目录下最好是有.cmake文件,不然会保存成txt格式的文件。

2.配置完环境变量添加各种库后运行仍显示缺少.dll库

我就是被这步卡了好久,一开始用的4.1.0版本的,不知道为啥经常出错,应该是4.1.0版本的在cmake时会默认选一些像WITH_MSMF这样的最后会给报错的选项,然后又不太感随便取消勾选,最后选择了3.4.1版本的,并且cmake时勾选上了BUILD_opencv_world,把opencv_world341.dll和opencv_world341d.dll又拷贝到了C:\Windows\System32中,并且在VS的附加的依赖项中把opencv_img_hash341.libopencv_img_hash341d.lib删掉了,结果就好了。

参考:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值