在此教程
介绍
有两种方式可以在Fedora上安装OpenCV-Python。1.从Fedora存储库中用预构建的二进制文件安装。2.从源文件编译。在这一节,我们将用两种。
另一件重要的事是所要求的其他库。OpenCV-Python仅需要Numpy库(除了其他依赖关系外,我们将在后面讨论)。但在这个教程中,我们也要用Matplotlib 来完成一些简单而漂亮的作图(与OpenCV比起来效果更棒)。Matplotlib是可选的,但高度推荐安装。相似地,我们来看一看IPython ,这是一个交互式的Python终端,也是高度推荐安装的。
从预构建的二进制文件安装OpenCV-Python
以ROOT身份从终端用下面的命令行安装所有的包。
yum install numpy opencv*
打开Python集成开发环境(或IPython),在终端输入下面的代码。
>>> import cv2 as cv
>>> print( cv.__version__ )
如果结果打印出来没有任何错误,恭喜!你已经成功安装OpenCV-Python。
这很简单。但有一个问题。yum仓库可能不总是能包含最新版本的OpenCV。举个例子,在写这个教程的时候,yum仓库有2.4.5版本但是最新的版本是2.4.6 。关于Python应用程序接口,最新的版本总是会包含更多的支持。另外,取决于现在的驱动,ffmpeg,gstreamer包等等,相机支持,视频播放等等都可能出现问题。
所以我个人更偏爱下一种方法,从源代码编译。并且在某个时刻,如果你想对OpenCV做出贡献,你也需要这种方法。
从源码安装OpenCV
从源代码编译最开始可能有一点复杂,但是一旦你成功了,这里就没有什么复杂的了。
首先我们安装依赖项。一些是强制的,一些是可选的。可选依赖项,如果你不想要可以跳过。
强制依赖项
我们需要CMake来配置安装,GCC用来编译,Python-devel 和 Numpy 来创建Python扩展等等。
yum install cmake
yum install python-devel numpy
yum install gcc gcc-c++
接下来我们需要GTK来支持GUI特性,相机支持(libdc1394,v4l),媒体支持(ffmpeg,gstreamer)等等。
yum install gtk2-devel
yum install libdc1394-devel
yum install ffmpeg-devel
yum install gstreamer-plugins-base-devel
可选择依赖项
以上依赖项足以在你的Fedora计算机上安装OpenCV了。但是取决于你的需求,你可能需要一些额外的依赖项。此类可选依赖项的列表在下面给出,你可以跳过或者安装,取决于你:)
OpenCV附带了像PNG,JPEG,JPEG2000等图像格式的支持文件。但是它可能有点老了。如果你想得到最新的库,可以安装这些格式的开发文件。
yum install libpng-devel
yum install libjpeg-turbo-devel
yum install jasper-devel
yum install openexr-devel
yum install libtiff-devel
yum install libwebp-devel
一些OpenCV功能和英特尔的线性构建模块(TBB)并行的。但是如果你想启用它,需要先安装TBB(另外在用CMake配置安装的时候,别忘了用-D WITH_TBB=ON 。下面还有更多细节。)
yum install tbb-devel
OpenCV用另一个库Eigen来优化数学操作。如果你的系统安装了Eigen库,你可以利用它。(另外在用CMake配置安装的时候,别忘了用-D WITH_EIGEN=ON 。下面还有更多细节。)
yum install eigen3-devel
如果你想构建documenation(你可以使用完整的搜素功能以HTML格式在你的系统创建离线的OpenCV的完整官方文档,这样,你有什么问题的话也不需要网络,并且相当快速)。你需要安装Doxygen(一种文档生成工具)。
yum install doxygen
下载OpenCV
接下来我们必须下载OpenCV.你可以从 sourceforge site下载最新版本。然后解压缩文件夹。
或者你可以从OpenCV的github repo下载最新的源代码。(如果你想要对OpenCV做出贡献,选择这种方式,因为这样你的OpenCV将一直更新)。为此,你需要先安装GIT.
yum install git
git clone https://github.com/opencv/opencv.git
它会在主目录(或你指定的目录)创建一个OpenCV文件夹。克隆会花一些时间,这取决于你的网络连接状态。
现在打开一个终端窗口并导航到下载的OpenCV文件夹。创建一个新的构建文件夹并导向它。
mkdir build
cd build
配置和安装
现在我们已经安装好了需要的依赖库,让我们开始安装OpenCV。安装需要用CMake来配置。它阐明了哪一个模块需要安装,安装路径,哪一个额外的库要被用到,文档和例子是否要被编译等等。下面的命令通常被用来配置(从构建文件夹来执行)。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
它阐明了构建模式是“Release Mode”,并且安装路径是 /usr/local。仔细观察 在每个选项之前的-D和 在末尾的… 。简而言之,这就是格式:
cmake [-D <flag>] [-D <flag>] ..
你可以指定任意数量的标志,但是每一个标志前面必须有-D。
所以在这个教程中,我们在TBB 和 Eigen的支持下安装OpenCV。我们也构建了文档,但是不包括性能测试和构建示例。我们也不使用GPU相关模块(因为我们使用的是OpenCV-Python,我们不需要GPU的相关模块。这也节约了我们的时间)。
- 启用TBB和Eigen支持:
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..
- 启用文档,禁用测试和示例。
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
- 禁用所有GPU 相关模块。
cmake -D WITH_OPENCL=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 ..
- 设置安装路径和构建类型。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
每次你输入Cmake语句,它都会打印出结果配置设置。在完成的最终设置中,保证填写以下字段(以下是我获得的一些重要的配置)。这些字段也应该在你的系统中被合适地填写。否则会出现问题。所以检查你是否正确地操作了以上步骤。
... -- GUI: -- GTK+ 2.x: YES (ver 2.24.19) -- GThread : YES (ver 2.36.3) -- Video I/O: -- DC1394 2.x: YES (ver 2.2.0) -- FFMPEG: YES -- codec: YES (ver 54.92.100) -- format: YES (ver 54.63.104) -- util: YES (ver 52.18.100) -- swscale: YES (ver 2.2.100) -- gentoo-style: YES -- GStreamer: -- base: YES (ver 0.10.36) -- video: YES (ver 0.10.36) -- app: YES (ver 0.10.36) -- riff: YES (ver 0.10.36) -- pbutils: YES (ver 0.10.36) -- V4L/V4L2: Using libv4l (ver 1.0.0) -- Other third-party libraries: -- Use Eigen: YES (ver 3.1.4) -- Use TBB: YES (ver 4.0 interface 6004) -- Python: -- Interpreter: /usr/bin/python2 (ver 2.7.5) -- Libraries: /lib/libpython2.7.so (ver 2.7.5) -- numpy: /usr/lib/python2.7/site-packages/numpy/core/include (ver 1.7.1) -- packages path: lib/python2.7/site-packages ...
还有很多其他地标志和设置在这里。它们留给你进行更进一步的操作。
现在你用make命令行构建文件并用make install命令行安装。应该以root的身份来执行make install。
make su make install
安装完毕。所有的文件都被安装到/usr/local/文件夹。但想要用它,你的Python应该要能够找到OpenCV模块。你有两种选择达到那一步。
- 将模块移动到Python路径的任意文件夹:在Python终端输入
import sys; print(sys.path)
可以找到Python的路径。会打印出很多位置。将/usr/local/lib/python2.7/site-packages/cv2.so
移动到任一文件夹。举个例子:su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages
但每次你安装OpenCV都必须操作一遍。
-
将
/usr/local/lib/python2.7/site-packages
移动到PYTHON_PATH:只需完成一次。打开/.bashrc
并加入下一行,然后注销返回。export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
这样OpenCV的安装就完成了。打开终端,试一下
import cv2 as cv
为了构建文档,输入下面命令:
make doxygen
然后打开
opencv/build/doc/doxygen/html/index.htm
并在浏览器里加入书签。 - 将模块移动到Python路径的任意文件夹:在Python终端输入