Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)

本文仅针对Python进行讲解。

一、前言

​ OpenCV在3.5版本以后因为版权问题,移除了SIFT和SURF工具,并整合入了opencv-contrib工具包中,但是,仅通过pip安装opencv-contrib-python是无法在python中使用的,需要用户自行将opencv-contrib编译进opencv中。

​ 网络上有很多关于OpenCV + OpenCV-contrib的编译的文章,这些文章均是关于编译好后在VS中使用的,而不是关于Python的,对于Python,编译上还是有些坑的。

​ 本文就对OpenCV+opencv-contrib共同编译后在Python中的安装,以及IDE中完美运行进行了讲解。

二、前期准备

1、源代码下载

​ opencv和opencv-contrib源代码在官方GitHub上可以进行下载。

​ https://github.com/opencv

​ 打开链接后,分别打开opencv和opencv_contrib。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第1张图片

选择版本:
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第2张图片
下载zip:
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第3张图片
下载可能会过慢,可以使用码云进行转存后下载,速度嗖嗖快。

opencv_contrib同理。
注意:opencv和opencv_contrib版本务必要一致。

2、CMake

​ 直接去官网下载64位或32位最新版就行,推荐64位。

​ 更多以及编译所需要的下载请阅读文章【OpenCV】opencv4.0.1+opencv_contrib4.0.1+VS2015的编译内的标题1和标题2,这里不过多赘述。

3、卸载opencv

​ 如果你的Python里装了opencv,请卸载,这点极其重要,可以用pip,也可以直接删除set-packages文件夹下的cv2文件夹。如果不删除,后面INSTALL时产生的cv2文件夹与pip安装的opencv产生的cv2文件夹发生冲突,使pip安装的cv2内发生覆盖,因为二者文件结构完全不同,布拉布拉的,反正就是用不了,会报错缺少DLL文件。

三、编译

​ 将原码全部解压,标题2所涉及到.cache文件夹也解压好,重命名并放到正确的位置。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第4张图片
我这里,build是编译后文件存储位置,down是标题2中引用文章中所提到的需要下载的依赖库临时下载位置,后面两个就是解压好的源代码。

​ 打开CMake。

​ 指定好opencv路径和编译文件存储路径(也就是build文件夹)。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第5张图片

点击Configure。弹出编译器设置列表,选择VS版本,位数,这里选择VS2017,64位。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第6张图片

​ 点击Finish,等待片刻,会出现一片姨妈红的配置列表。如果你已经事先手动下载好了标题2内引用连接所提到的相关依赖库,会比较顺利,否则编译器会自动下载,你将有90%的概率下载失败而编译失败,基本上还是自己手动下载吧。最下方日志栏会有Configuring字样,如果报错会有红色的错误信息。


Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第7张图片

​ 现在开始配置。

​ ·在列表内找到以下内容:

​ BUILD_opencv_world、OPENCV_NONFREE、OPENCV_FORCE_PYTHON_LIBS这三个全部打上对勾。

​ ·在列表找到以下内容:

​ OPENCV_GENERATE_STEPVARS、OPENCV_PYTHON3_VERSION全部取消对勾。

注意:

OPENCV_NONFREE不打对勾在使用SIFT时会报错;

OPENCV_PYTHON_VERSION如果选中会导致VS在生成时python不通过编译彻底失败;

OPENCV_GENERATE_STEPVARS这个没什么用,不影响编译,打上对勾CMake编译时会报错飘红,看着难受;

其他为什么要选中网上很多文章有讲解。

​ ·检查Python解释器路径,Python的set-packages路径,如果Python安装了Debug版本检查Debug版本路径,如果电脑内有IronPython2.7,将Python2相关的全部清空,否则会编译报错。

​ ·找到OPENCV_EXTRA_MODULES_PATH,将opencv_contrib内的modules路径填进去。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第8张图片

​ 再次点击Cconfigure,等待片刻,配置列表会变白色,如果还是有姨妈红,则多点几次Configure,一般需要点2次。

​ 都变白之后,日志结尾有Configuring done字样,而后点击Generate,等待片刻出现Generating done字样。

​ 点击Open Project按钮,打开Visual Studio2017,工程会自动加载。

​ 等待工程加载完毕(看左下角,这工程尼玛几万个文件我真的是服了)完全加载完毕后,将解决方案改为Release x64(要跟CMake最开始编译时选择编译器版本位数一致,否则编译不过)

Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第9张图片
​ 在解决方案对话框内找到CMakeTargets文件夹下的INSTALL,右键,生成(或者重新生成)。也可以先先用ALL_BUILD生成,然后再INSTALL,都可以,两个各半个小时左右,自己看着办就好。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第10张图片
​ 然后等个半个小时就可以了。期间会出现WARNING,这是字符编码警告,忽略即可,出现红色的ERROR就得查错了。

Python里使用及简单优化

​ 现在在Python的set-packages下已经有cv2文件夹了,说明安装成功。这个时候已经可以使用了,可以自己试一下。

​ 但这里需要说明几个坑(放心,会填上的):

​ 1、如果你使用第三方IDE,例如PyCharm,导入cv2后,是不会有自动补全的,极其难受,网上说把import cv2改成import cv2.cv2,这里是不行的,那种方法仅针对pip安装版本,这种自己编译的版本文件结构和正常pip安装的文件结构不同,导致了包内init.py与pip版的不同,如果import cv2.cv2,直接报错找不到module。

解决办法:找到cv2内的python-3.7文件夹下的pyd文件,复制到set-packages文件夹下,注意是复制,不是移动,然后改名为cv2,就好了,是不是很简单哈哈哈哈哈哈。

​ 这样就看到PyCharm里已经可以使用SIFT和SURF算法了。
Python3.7.7+OpenCV4.2+OpenCV-contrib-python在VS2017下的编译和安装配置以及填坑(解决PyCharm无自动补全的问题)_第11张图片

2、与pip版不同的是,编译版不配有各种眼部面部嘴巴什么的各种xml文件,其实这一堆文件在opencv源代码文件夹里,打开opencv源代码文件夹,找到data,可以看到data里面都是你想要的xml,把data文件夹复制到cv2里即可。

你可能感兴趣的:(Python,python,opencv,cmake,pycharm,visual,studio)