python opencv 界面按钮_(四十一)CMake+VS+opencv/opencv_contrib 环境配置

12e4f7f971eff5a3b82329b8844e4cd0.png

时间为友,记录点滴。

在做SIFT代码是,忽然发现一件事情,我们之前虽然提过如何编译OpenCV的源码,但只是为了了解代码,今天终于可以拿来实操一下。分享一下我的环境,以及中间遇到的问题。

重要的事情写在前面

如下是我的环境版本号,如果你在配置的时候有问题,可以把环境恢复的跟我一模一样,如果还是有问题,那肯定就是网络的问题(在cmake中会download一些关键文件)。

  • 主机系统: Win10 64Bit(Win7之前做过,也Ok)
  • Visual Studio: 2017(VC15)
  • OpenCV:4.1.1
  • Opencv_contrib:4.1.1(这个版本一定要跟OpenCV保持一致)
  • CMAKE:3.14.5
  • Python:3.7
注意:

1、全程路径里面不要出现中文。

2、挑选一个网络好的时刻工作。


第一步:Download OpenCV 源码

如果往前翻一翻,我们曾经介绍过相关内容。

lowkeyway:(四)源码和编译​zhuanlan.zhihu.com
72d1d07ea2a41803f6d998805a6fc5af.png

今天只讲步骤,以及过程中可能遇到的问题。

1、进入OpenCV Github官网

opencv/opencv​github.com
c2fe0e2274ea7479a98b6eb07598c8d6.png

2、不要直接clone,找release。

3493d02ec5a4df3bb77931255b93d774.png
release里面的是经过验证的,外面代码可能存在问题。

3、 找到我们的目标版本, 4.1.1

7eae2714ad5c835274cb573da79ef460.png
人狠话不多,只download Source code

4、解压到当前目录

88f769153dd5793b21a9b91b937a5db3.png
看,根目录下有CMakeList

第二步:Download 三方扩展模块

1、进入OpenCV Github根目录

OpenCV​github.com
c2fe0e2274ea7479a98b6eb07598c8d6.png

2、找到opencv_contrib仓

378452a31b53f8db812bd4246beae989.png
跟OpenCV不是一个仓奥

3、老规矩,不要直接clone,先进release

06cf5f51df980154a6db868cdf97af20.png

4、找跟刚才下载的OpenCV源码对应的一模一样的版本,4.1.1

e6676b343d2727af7c015fa7c58f1181.png

5、解压到当前目录

2f49366a3464284fe626338df29fbcb3.png
modules是关键目录

第三步、下载CMAKE

1、先进CMAKE官网的DOWNLOAD界面

下拉到底,找到Older Releases。当然,如果你知道CMAKE的github地址可以直接去。

02d8742819457b02fe97acba14ec82f9.png
不来官网看看总觉得进了钓鱼网站

2、找到我们想要的版本, 3.13.5

对于开发来说,不要总想尝试最新版本,合适的才是最好的。

13fc1f4768ba1e6da08a8eab83a6d3d1.png
CMake的同志们真辛勤,更新神速

3、msi是需要安装的,没什么难度,一路next就可以了。

876eb79715ed2163a3c2434f6819953a.png
个人建议加到环境变量里面,这样也可以用作其他。

4、露个脸

12f3266ade9c022accb08d976d5a8461.png
UI界面好

完美,来个合照先(新建一个BuildFile目录,给后面CMake编译用)。

e75e139140d642f1ca9f1b1883789710.png
这就是今天所有需要准备的东西(默认安装过VS和Python)

我整理到了连接如下:

//download.csdn.net/download/lowkeyway/11972238


第五步、CMAKE编译OpenCV源码

1、加载源码,指定输出目录

听说最好用按钮选,别直接复制路径。吓得我战战兢兢。

  • 选择好OpenCV源码路径(还记得上图中带CMakeList的路径吗?)
  • Build Bin目录最好在OpenCV的同级目录自己创建一个(没有要求,就是好找些)

56a25af80d59daffb3375249ce5ce6a4.png

2、开始Configure

4387dc688b137e00a3257f082fb13502.png
注意2步,一定要结合自己的实际情况。

3、再次Configure,完美主义。

configure的时间比较长,一般15~30分钟不等。一定要网络畅通。

a433152a0be4c9b9816840c532273cb2.png
提示Configuring done,但是这一堆红色让人很反感,再来一遍。

a7bfa7ab88f75cd42b234b5dcec47fbe.png
完美

4、Generate

Generate的时间就非常短了。

e7b336de8dcdaca36b5523f834aac4c2.png

第六步:CMAKE编译opencv_contrib源码

1、增加opencv_contrib目录(别忘了使能NONFREE)

重新配置一下。

  • 使能OPENCV_ENABLE_NONFREE(第三方里面有不免费的东西啊,比如咱们的SIFT)
  • 选择OPENCV_FORCE3RDPARTY_BUILD的路径(就是opencv_contrib-4.1.1/modules)

然后再来一遍config

74e9348c6b06f563038a4cb2b2d18221.png

2、开始Configure

0d455f5f75a2b34a434d526a14611522.png
第一次Configure总有红色(差异项?需要确认项?)

3、再次Configure,完美主义

d3896adafc23e22d4d4e4272db33c4d3.png
没有大红提醒

4、Generate。

d46c198cecfc4c0974d5d2282e67f3b3.png
这一步非常快

第七步:编译工程

1、 打开OpenCV.sln工程

执行完上面的步骤,看一下BuildFile目录,是不是多了好多文件?我们找到OpenCV.sln文件,用VS2017打开。

f610d3aaaac6ade7cecdc93191576dc3.png
足足有158个 project(我怎么记得有过160?)

2、先全编一遍

管他三七二十一,全编一遍最保险,这个步骤也比较费时。(15~30分钟again)

ab695aacd6146013c524827234a88e4d.png
(我试过调过这个步骤,也可以)
  • 问题一:C1083 Cannot open include file: 'vgg_generated_120.i': No such file or directory opencv_xfeatures2d

找不到vgg_generated_120.i/boostdesc_bgm.i等文件

如果你在CMAKE编译的时候,没有自定义模块。那么原因是你网络的问题,在download这些文件的时候超时了。

没关系在网上、或者在CMAKE的log中找到下载链接。手动把文件下载下来,放在opencv_contrib/modules/xfeatures2d/src/目录下即可。

要重新去CMAKE下面configure&generate一遍

问题二:LNK1104 无法打开文件“python37_d.lib”

这个是因为当时安装Python的时候,没有选择debug版本,而我们现在的工程编译的是debug导致的。

没关系,在网上、或者把Python重新安装的时候,下载一个即可。放在跟你的python37.lib同级目录即可(我的是Continuumanaconda3libs)。

我试过,直接把release版本的python37.lib拷贝重命名为python37_d.lib不好使。

当然,如果你不想找链接,我也准备好了:

//download.csdn.net/download/lowkeyway/11972255

bb7540a9b7892584ed3b6c95d574730f.png
直到提示框里没有报Error

3、编译INSTALL

在CMakeTargets下面找到INSTALL,右键有仅用于项目->仅编译INSTALL

9baad2a0d46d7b4187387a6b63810f40.png
其实,我也试过直接右键Build,也可以。

4、查看生成文件

最终生成的文件在Binfileinstall文件夹下:

3b6258545b5861345624b032ea1eef10.png

第八步:环境变量

把刚生成的*Binfileinstallx64vc15bin作为环境变量加进入(如果之前有OpenCV的就替换之前的,切记!)。

ab1990552201b292e811cca6c27975de.png

第九步:配置VS

好了,编译完成后,我没就可以用自己库文件啦!

1、随便打开一个我们之前的工程

  • 确保Debug + x64 配置
  • 菜单栏->视图->其他窗口->属性管理器(View->Other Windows->Property Manager)
  • 右键Debug|x64->配置(Properties)

03594045e81a6d480c342142c30a599c.png

2、 增加编译头文件包含目录

93b757ca8d9b073f622ba8611a542f85.png
  • BinFileinstallincludeopencv2
  • BinFileinstallinclude

3、增加编译库文件包含路径

6228d3e2e665f86c9d83031f2e0bc382.png
  • Binfileinstallx64vc15lib

4、增加链接的库文件包含路径

989f46d9488a4859d2c9803576f4d472.png

提示:

  • 在目录空白处,同时按Shift+鼠标右键,选择超级终端(powershell),可以执行ls *.lib。
  • 或者用普通shell执行dir /b *.lib *>0.txt,在0.txt中查看也可以

2cd7300d9132485bd4e3b2227fad0230.png
  • opencv_aruco411d.lib
  • opencv_bgsegm411d.lib
  • opencv_bioinspired411d.lib
  • opencv_calib3d411d.lib
  • opencv_ccalib411d.lib
  • opencv_core411d.lib
  • opencv_datasets411d.lib
  • opencv_dnn411d.lib
  • opencv_dnn_objdetect411d.lib
  • opencv_dpm411d.lib
  • opencv_face411d.lib
  • opencv_features2d411d.lib
  • opencv_flann411d.lib
  • opencv_fuzzy411d.lib
  • opencv_gapi411d.lib
  • opencv_hdf411d.lib
  • opencv_hfs411d.lib
  • opencv_highgui411d.lib
  • opencv_imgcodecs411d.lib
  • opencv_imgproc411d.lib
  • opencv_img_hash411d.lib
  • opencv_line_descriptor411d.lib
  • opencv_ml411d.lib
  • opencv_objdetect411d.lib
  • opencv_optflow411d.lib
  • opencv_phase_unwrapping411d.lib
  • opencv_photo411d.lib
  • opencv_plot411d.lib
  • opencv_quality411d.lib
  • opencv_reg411d.lib
  • opencv_rgbd411d.lib
  • opencv_saliency411d.lib
  • opencv_shape411d.lib
  • opencv_stereo411d.lib
  • opencv_stitching411d.lib
  • opencv_structured_light411d.lib
  • opencv_superres411d.lib
  • opencv_surface_matching411d.lib
  • opencv_text411d.lib
  • opencv_tracking411d.lib
  • opencv_video411d.lib
  • opencv_videoio411d.lib
  • opencv_videostab411d.lib
  • opencv_xfeatures2d411d.lib
  • opencv_ximgproc411d.lib
  • opencv_xobjdetect411d.lib
  • opencv_xphoto411d.lib

环境验证,实验。

好 大工告成,让我们试一试自己的lib好用不。

找一个需要xfeature2d模块的代码,对就是上一章的SIFT:

#include 

9343c7f1f0878e61a03494356eb0e052.png
输入一张竖着的大猫,一张横着的小猫。

f921641b5fed761c20b8458c5093b576.png
输出是SIFT的关键点的链接

证明环境是没有问题的!


Python 环境

因为我一直都是用Anaconda开发,所以Python的环境相对来说就容易一些(准确的说,是不用配置。)

如果你遇到的问题是:

Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::c

那么要么是因为你安装的是opencv-python,或者没有安装正确opencv-contrib-python的版本。

如果是这样,你可以先卸载本地的cv2,方法为(要看你当时安装的是opencv-python还是opencv-contrib-python):

pip uninstall opencv-python

pip uninstall opencv-contrib-python

然后,找比较老的版本,比如:

pip install opencv-contrib-python==3.4.2.17

这样,C:ProgramDataAnaconda3Libsite-packagescv2目录就会被更新,我们测试一下环境:

#!/usr/bin/env python

092b3de32a89d98169008a7a67d6561f.png
结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>