目标
在本教程中
- 我们将学习如何在 Fedora 系统中安装 OpenCV-Python。以下步骤已在 Fedora 18 (64 位) 和 Fedora 19 (32 位) 上进行测试。
简介
在 Fedora 中安装 OpenCV-Python 有两种方法: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 函数使用 Intel 的线程构建块 (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 ..
它指定构建类型为“Release Mode”,安装路径为 /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: 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 命令安装它。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。