目标
本教程中
- 我们将学习如何在您的Fedora系统中设置OpenCV-Python。以下步骤已在Fedora 18(64位)和Fedora 19(32位)上测试。
简介
OpenCV-Python可以在Fedora中通过两种方式安装:1) 安装Fedora存储库中提供的预构建二进制文件;2) 从源代码编译。在本节中,我们将介绍这两种方法。
另一个重要的事情是所需的附加库。OpenCV-Python只需要NumPy(除了其他依赖项,我们稍后会看到)。但在这个教程中,我们也使用Matplotlib进行一些简单且美观的绘图(我觉得比OpenCV好得多)。Matplotlib是可选的,但强烈推荐。同样,我们还将看到IPython,一个交互式Python终端,也强烈推荐。
从预构建二进制文件安装OpenCV-Python
以root用户身份在终端中使用以下命令安装所有软件包。
$ yum install numpy opencv*
打开Python IDLE(或IPython)并在Python终端中键入以下代码。
>>> import cv2 as cv
>>> print( cv.__version__ )
如果结果在没有任何错误的情况下打印出来,恭喜!!!您已成功安装OpenCV-Python。
这很简单。但这存在一个问题。Yum存储库可能并不总是包含最新版本的OpenCV。例如,在撰写本教程时,yum存储库包含2.4.5,而最新OpenCV版本为2.4.6。对于Python API而言,最新版本将始终包含更好的支持。此外,根据驱动程序、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、TIFF、WebP等图像格式的支持文件。但它可能有点旧。如果您想获得最新的库,您可以安装这些格式的开发文件。
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。更多详细信息如下。)
OpenCV使用另一个库Eigen进行优化的数学运算。因此,如果您的系统中安装了Eigen,您可以利用它。(在使用CMake配置安装时,不要忘记传递-D WITH_EIGEN=ON。更多详细信息如下。)
如果您想构建文档(是的,您可以在您的系统中创建OpenCV完整官方文档的离线HTML版本,并具有完整的搜索功能,以便您不必总是访问互联网来查找答案,而且速度很快!!!),则需要安装Doxygen(一个文档生成工具)。
下载OpenCV
接下来,我们必须下载OpenCV。您可以从sourceforge网站下载最新版本的OpenCV。然后解压文件夹。
或者您可以从OpenCV的github仓库下载最新的源代码。(如果您想为OpenCV做出贡献,请选择此方法。它总是使您的OpenCV保持最新)。为此,您需要先安装Git。
yum install git
git clone https://github.com/opencv/opencv.git
这将在主目录(或您指定的目录)中创建一个名为OpenCV的文件夹。克隆所需的时间取决于您的互联网连接。
现在打开一个终端窗口,并导航到下载的OpenCV文件夹。创建一个新的build文件夹并导航到它。
配置和安装
现在我们已经安装了所有必需的依赖项,让我们安装OpenCV。安装必须使用CMake进行配置。它指定要安装哪些模块、安装路径、要使用哪些附加库、是否编译文档和示例等。以下命令通常用于配置(从build文件夹执行)。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
它指定构建类型为“发布模式”,安装路径为/usr/local。注意每个选项之前的-D和最后的..。简而言之,格式如下
cmake [-D <flag>] [-D <flag>] ..
您可以指定任意数量的标志,但每个标志都应该以-D开头。
因此在本教程中,我们使用TBB和Eigen支持安装OpenCV。我们还构建了文档,但我们排除了性能测试和构建示例。我们还禁用了GPU相关模块(因为我们使用OpenCV-Python,所以不需要GPU相关模块。这节省了一些时间)。
(所有以下命令都可以在单个cmake语句中完成,但此处为了更好地理解而将其分开。)
- 启用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: 是 (版本 2.24.19)
-- GThread: 是 (版本 2.36.3)
-- 视频输入/输出
-- DC1394 2.x: 是 (版本 2.2.0)
-- FFMPEG: 是
-- 编解码器 (codec): 是 (版本 54.92.100)
-- 格式 (format): 是 (版本 54.63.104)
-- 工具 (util): 是 (版本 52.18.100)
-- swscale: 是 (版本 2.2.100)
-- gentoo 风格: 是
-- GStreamer
-- 基础库 (base): 是 (版本 0.10.36)
-- 视频库 (video): 是 (版本 0.10.36)
-- 应用库 (app): 是 (版本 0.10.36)
-- riff 库: 是 (版本 0.10.36)
-- pbutils 库: 是 (版本 0.10.36)
-- V4L/V4L2: 使用 libv4l (版本 1.0.0)
-- 其他第三方库
-- 使用 Eigen: 是 (版本 3.1.4)
-- 使用 TBB: 是 (版本 4.0 接口 6004)
-- Python
-- 解释器: /usr/bin/python2 (版本 2.7.5)
-- 库: /lib/libpython2.7.so (版本 2.7.5)
-- numpy: /usr/lib/python2.7/site-packages/numpy/core/include (版本 1.7.1)
-- 包路径: lib/python2.7/site-packages
...
还有许多其他标志和设置。您可以进一步探索。
现在,您可以使用 make 命令构建文件,并使用 make install 命令安装它。make install 必须以 root 权限执行。
安装完成。所有文件都安装在 /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'。
要构建文档,只需输入以下命令:
然后打开 opencv/build/doc/doxygen/html/index.html 并将其添加到浏览器书签。
练习
- 在您的 Fedora 机器上从源代码编译 OpenCV。