OpenCV3.3 + Python3.6 开发环境配置

2018.9.6 更新:Anaconda3-5.2.0版本(Python 3.6)下OpenCV 3 安装

今天重新安装了 Python 的环境,发现在新版本 Anaconda3 下安装配置 OpenCV 3 十分简单。
Anaconda navigator 左侧选择 Environment ,在右侧要使用的环境中,左上方将 Installed 改为 All,右侧搜索 cv ,便可看到 opencv,勾选后点击右下角 Apply ,同时还会安装几个依赖包,点击确认后稍等即可,我安装的版本是 3.4.1 。
如此简单,快在编辑器中 import cv2 试试吧!

以下是原文:


人生苦短,快用 Python。传统的 OpenCV 使用 C++ 开发,程序运行效率高,但是开发效率… Python 语法简洁,现在越来越流行,如果对效率没有严格要求的话非常推荐使用。比如我之前做的识别数独的程序,慢一点也没有关系。

在 Python 2.7 里使用 OpenCV 实在是再简单不过了,只需要把 OpenCV 目录中 /build/python/2.7 里的 “cv2.pyd” 复制粘贴到 Python 目录下的 \Lib\site-packages 文件夹中,再 import cv2 即可。

但是,本人一开始学的就是 Python 3 ,与2版本的还是有一些区别的,加上什么都喜欢用最新版的强迫症,所以查了一些资料并做了实验,把 OpenCV 3 在 Python 3 中的使用方法总结一下。

首先本文使用具体版本(2017.12.16):

  • Python 版本:3.6.3Anaconda 3
  • OpenCV 版本:3.3.1
  • Windows 10 x64

因为 opencv-python 需要 numpy 包,要安装 numpy 可以自己下载安装,不过如果使用 Anaconda 则更方便,包含了 numpy 在内的大量的科学包,还有很多其他好处。IDE使用的是 PyCharm ,美观好用。安装Anaconda3与PyCharm的过程很简单,就不多说了。

1. Anaconda 下使用 conda 安装 opencv

Anaconda使用conda管理各种包,关于conda的使用可以参考这里 。

如果在命令行里输入 conda install -c menpo opencv 的话,安装的版本是 v2.4.11 ,不是我想要的版本。

如果在命令行里输入 conda install -c menpo opencv3 的话,安装的版本是 v3.1.0 ,但是会提示:

UnsatisfiableError: The following specifications were found to be in conflict:
  - opencv3 -> python 2.7*
  - python 3.6*

意思是这个 opencv3 支持 python2.7 但是当前环境为 python3.6 ,所以直接使用 conda 安装可以使用但只能对版本做出妥协

2. pip 安装 opencv

使用python自带的pip管理包的话,可以试试 pip install opencv-python ,之后会自动下载:

Downloading opencv_python-3.3.0.10-cp36-cp36m-win_amd64.whl (39.7MB)`

但是我在 anaconda 命令行里使用 pip 总是下到一半出 Exception。

另一个办法是在下面的网址下载对应版本及平台的 .whl 包,再手动安装。

https://www.lfd.uci.edu/~gohlke/pythonlibs/

例如我下载的是:opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl

将其拷贝到 Python 目录下的 \Lib\site-packages 文件夹中,在这个目录下打开命令行(shift+右键),或者cd进这个目录,输入:

pip install opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl

安装完成即可使用 import cv2

3. 使用 CMake 重新编译适用于 python3 的 cv2.pyd

使用CMake重新配置和编译,这种做法可以参考我的博客中“使用 CMake + VS2017 ( + Python 3) 配置和编译 OpenCV 3.3”一文,最后会得到 cv2.cp36-win_amd64.pyd 直接拷贝即可使用。


我尝试了后两种方案均可以成功,需要注意使用的版本及平台是否对应,若使用版本不同可参考网络上其他教程。

你可能感兴趣的:(OpenCV)