共计 1971 个字符,预计需要花费 5 分钟才能阅读完成。
OpenCV 是一个跨平台的计算机视觉库,可以运行在 Windows、Linux、MacOS 等操作系统上。OpenCV 提供了众多语言的接口,其中就包含了 Python,Python 是一门上手容易、使用起来十分让人愉悦的语言,利用 Python 学习 OpenCV,相信能更快的获得效果。
OpenCV 的官方下载网址是 http://opencv.org/releases.html,我选择的是最新 3.2.0 版本,对于 Windows 用户,可直接下载 exe 文件安装,过程十分简单,这里就不再多说了,如果遇到问题可以看看官方的安装指南,对于 Linux 用户,可下载 OpenCV 源码自行编译,在官网上下载 zip 格式的源码压缩包。
首先安装如下几个软件包:
- GCC 4.4.x or later
- CMake 2.8.7 or higher
- Git
- GTK+2.x or higher, including headers (libgtk2.0-dev)
- pkg-config
- Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
- ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
- [optional] libtbb2 libtbb-dev
- [optional] libdc1394 2.x
- [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
- [optional] CUDA Toolkit 6.5 or higher
[optional] 代表这个 package 是可选的,上面这些包都是可以通过 apt-get 命令直接安装的,打开终端,输入以下命令:
[compiler]
$ sudo apt-get install build-essential
[required]
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional]
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-dev
只需一小会,编译所依赖的 packages 便全部安装完毕了(这也是我喜欢 Linux 的原因之一,安装 package 十分的便利)。接着就是开始编译了,实际上编译只需要三行命令就可以完成。不过在此之前,还要在解压后的 opencv-XXX 文件夹内建立一个 build 文件夹,编译生成的 makefiles、project files、object files 和 output files 会放在 build 文件夹里面,完成后,就可以开始正式的编译了。
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
CMAKE_BUILD_TYPE: build 的类型,有 Release 和 Debug 两种
CMAKE_INSTALL_PREFIX:指定想要安装 OpenCV 的文件夹目录,一般就用 /usr/local
除此之外,还可以添加上 BUILD_DOCS 来 build 文档 以及 BUILD_EXAMPLES 来 build 所有的样例
注意:如果上面的命令行无法工作,则把 - D 后面的空格去掉:
$ cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j7 # 同时使用七个线程
sudo make install
如果到现在你还没遇到任何问题,那么恭喜你,你已经成功在 Linux 上安装了 OpenCV。为了测试你的 OpenCV 能否在 Python 上使用,可以运行一段小代码,读取一张图片并显示出来:
import cv2
image = cv2.imread("logo.png", 1)
cv2.imshow("Hello, world!", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
如果运行时报错,尝试把图片的相对路径改为绝对路径。运行成功后,你会看到: