openc_viz
前言
最近工作需要在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 会出现选择版本界面。选择VS2017和X64,点击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_BUILD和INSTALL

成功后就可以进行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.lib和opencv_img_hash341d.lib删掉了,结果就好了。
参考:
该教程详细介绍了如何在VS2017中配置OpenCV 3.4.1的viz模块,包括安装cmake、vtk,以及编译opencv和opencv_contrib。过程中涉及的步骤包括环境变量配置、解决缺少.dll库问题等。

2226

被折叠的 条评论
为什么被折叠?



