1.4 在 Debian(Ubuntu)中配置 OpenCV-Python
注
原英文文档无此章节。
Debian 及由其派生出的 Ubuntu 作为普及度较广的 Linux 发行版之一,应该有一篇针对 Debian 家族的 OpenCV-Python 环境配置的文档。
本文档采用 OpenCV 3.3+Python 3的配置,因为 Python3 是 Python 的未来,教程其他部分中有少部分代码只能用于 Python 2(虽然将其改成合法Python 3代码十分方便),请使用者注意。
如果你坚持要使用 Python 2,只需将 CMake 这里的选项稍作修改即可。
目标
在这个教程中:我们将会学习如何在 Debian(Ubuntu)环境下安装 OpenCV-Python。下面的步骤在 Ubuntu 17.04和(Docker 中的)Debian stretch 下通过了测试。
直接使用 pip 安装
由于不同的环境下默认用户是否是root的情况不同,下面的代码中不会添加sudo,请在得到权限不足的错误时自行添加sudo。
首先安装python环境
apt update
apt install python3 python3-pip
然后直接
pip3 install opencv-python
简单粗暴
从源码编译安装OpenCV
虽然在Debian中利用包管理器等方式安装OpenCV确实可行,但这样可能会出现各种奇怪的支持错误,因此我们下面会讲解如何从源码安装OpenCV。
下面的依赖基本都是必须的,如果有对其他OpenCV扩展功能的需求,请自行安装依赖并修改CMake
选项。
由于不同的环境下默认用户是否是root的情况不同,下面的代码中不会添加sudo,请在得到权限不足的错误时自行添加sudo。
安装依赖
apt update
apt install g++ cmake python3 python3-dev python3-pip pkg-config
pip3 install numpy
如果你需要cv2.imshow()
等GUI功能,需要安装GTK-dev,如果你准备通过其他方式绘制图形到屏幕上(如matplotlib
)或者不需要(又或是不能,如要安装在docker容器中),可以忽略下面这行命令:
apt install libgtk2.0-dev
下载源码包
有两种下载源码包的方法:
获得 sorceforge 上的发行版源码
# 使用wget下载源码压缩包
apt install wget unzip
wget https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-unix/3.3.1/opencv-3.3.1.zip
wget https://github.com/opencv/opencv_contrib/archive/3.3.1.zip
# 解压备用
unzip opencv-3.3.1.zip
unzip 3.3.1.zip
从 GitHub 上拉取最新版本的源码(如果你要为 OpenCV 贡献代码,你需要选择此项)
apt install git
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
准备构建
进入下载到的源码文件夹
cd opencv-3.3.1 # 如果使用的是GitHub上的源码,那文件夹就叫opencv
建立一个build文件夹,并进入它
mkdir build
cd build
利用 cmake 配置安装
请注意 ../../opencv_contrib-3.3.1/modules 这部分要根据你的 opencv_contrib 文件夹的路径进行调整
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_opencv_python3=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.1/modules \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_OPENCL=OFF \
-D WITH_CUDA=OFF \
-D BUILD_opencv_gpu=OFF \
-D BUILD_opencv_gpuarithm=OFF \
-D BUILD_opencv_gpubgsegm=OFF \
-D BUILD_opencv_gpucodec=OFF \
-D BUILD_opencv_gpufeatures2d=OFF \
-D BUILD_opencv_gpufilters=OFF \
-D BUILD_opencv_gpuimgproc=OFF \
-D BUILD_opencv_gpulegacy=OFF \
-D BUILD_opencv_gpuoptflow=OFF \
-D BUILD_opencv_gpustereo=OFF \
-D BUILD_opencv_gpuwarping=OFF ..
如果你需要基于 GTK 的 GUI 功能
cmake -D WITH_GTK=ON ..
还有其他许多标志和设置。 留给你进一步探索。
构建&安装
make
make install # (这里需要root权限)
这样应该就装好了。
测试
打开一个Python控制台,试试看:
>>> import cv2
>>> cv2.__version__
如果没有出现错误,而且正确的打印出了你安装的 OpenCV 版本号,那恭喜你成功了!
更多资源
如果你在安装了 GTK 的 GUI 支持,但在用 imshow
显示图像时遇到了类似下面这样的问题:
/usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc:30: error: invalid string constant "murrine-scrollbar", expected valid string constant
那么你可以打开/usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc,找到 murrine-scrollbar
并将其替换为 scrollbar
,即可解决问题。
练习
在你的 Debian(Ubuntu)机器上从源码构建安装 OpenCV-Python。