【转载】在Fedora中安装OpenCV-Python(二)

本教程针对Fedora 18(64位)和Fedora 19(32位)进行,其他的版本目前不排除有其他bug。

介绍

我们通过两种方式在Fedora中安装OpenCV-Python:

1)从Fedora存储库中可用的预构建二进制文件安装;
2)从源代码进行编译。

另外,OpenCV-Python需要Numpy库,并且强烈建议安装Matplotlib,当然了,安装需要通过IPython(一个交互式Python终端)来进行,下面我们先来用第一种方法进行安装。

预构建二进制文件安装

为了更方便的进行安装,我们以root(系统管理员)的身份在终端中使用一下命令安装所有的软件包。

 	view plaincopy to clipboardprint? 
 1. $ yum install numpy opencv *

打开刚刚介绍的IPython,然后再Python终端中输入一下代码:

	view plaincopy to clipboardprint?
 1. >>> import cv2 as cv  
 2. >>> print( cv.__version__ )

回车打印之后如果没有任何错误,那么则说明已经成功安装了,用这种方法安装可能会有一个问题:

Yum仓库可能不总是包含最新版本的 OpenCV。例如,在撰写本教程时,yum 库包含3.4.1,而最新的 OpenCV 版本是4.2。对于 Python API,最新版本总是包含更好的支持。另外,取决于所使用的驱动程序、ffmpeg、gstreamer软件包等,相机支持,视频播放等可能会出现问题。

所以事实上另一种办法反而会更有效,即从源代码编译。

从源代码进行编译

从源代码编译起初可能看起来有点复杂,但是一旦成功了,就没有什么复杂的了。

首先,我们将安装一些依赖项。有些是强制性的,有些是可选的。可选的依赖项,如果不需要,可以跳过。

强制依赖项:

首先需要CMake来进行配置安装,用GCC进行编译,Python-devel和Numpy来创建Python扩展。

	view plaincopy to clipboardprint?

 1. yum install cmake   
 2. yum install python-devel numpy   
 3. yum install gcc gcc-c++

接下来需要GTK对GUI功能的支持,相机支持(libdc1394,v4l),媒体支持(ffmpeg,gstreamer)等。

	view plaincopy to clipboardprint?
 1. yum install gtk2-devel   
 2. yum install libdc1394-devel   
 3. yum install ffmpeg-devel   
 4. yum install gstreamer-plugins-base-devel

可选依赖项:

OpenCV附带了用于图像格式(例如PNG,JPEG,JPEG2000,TIFF,WebP等)的支持文件。但是它可能有些旧。如果要获取最新的库,可以安装这些格式的开发文件。

	view plaincopy to clipboardprint?
 1. yum install libpng-devel   
 2. yum install libjpeg-turbo-devel   
 3. yum install jasper-devel  
 4. yum install openexr-devel   
 5. yum installlibtiff-devel   
 6. yum install libwebp-devel

几个OpenCV功能与英特尔的线程构建模块(TBB)并行。但是,如果要启用它,则需要先安装TBB。(同样在使用CMake配置安装时,请不要忘记设置-D WITH_TBB = ON。下面更多详细信息。)

	view plaincopy to clipboardprint?
 1. yum install tbb-devel

OpenCV使用另一个Eigen库来优化数学运算。因此,如果系统中装有Eigen,则可以利用它。(同样在使用CMake配置安装时,请不要忘记设置WITH_EIGEN = ON)

	view plaincopy to clipboardprint?
 1. yum install eigen3-devel

如果需要构建文档,那么就需要安装Doxygen(文档生成工具)。

	view plaincopy to clipboardprint?
 1. yum install doxygen

下载OpenCV

接下来,我们可以开始下载OpenCV了:

1、从sourceforge网站:http://sourceforge.net/projects/opencvlibrary/ 下载最新版本的OpenCV 。然后解压缩文件夹。

2、 从OpenCV的github存储库下载最新的源代码。为此,需要先安装Git。

	view plaincopy to clipboardprint?
 1. yum install git   
 2. git clone https://github.com/opencv/opencv.git

它将在主目录中创建一个文件夹OpenCV,复制将会需要一些时间。

现在打开一个终端窗口,然后导航到下载的OpenCV文件夹。创建一个新的构建文件夹并导航到它。

	view plaincopy to clipboardprint?
 1. mkdir build   
 2. cd build

配置和安装

现在,已经安装了所有必需的依赖项,让我们安装OpenCV,当然了,必须使用CMake配置安装。它指定要安装的模块,安装路径,要使用的其他库,是否要编译的文档和示例等。下面的命令通常用于配置(从build文件夹执行)

	view plaincopy to clipboardprint?
 1. cmake -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX = / usr
    / local ..

它指定构建类型为“发布模式”,安装路径为/usr/local。在每个选项之前标志-D,在最后观察标志…。简而言之,这是一种格式:

	view plaincopy to clipboardprint?
 1. cmake [-D <flag>] [-D <flag>] ..

你可以指定任意数量的标志,但是每个标志前面应带有-D。

在本教程中,我们将安装具有TBB和Eigen支持的OpenCV。我们还构建了文档,但是不包括性能测试和构建示例。我们还会禁用与GPU相关的模块(因为我们使用的是OpenCV-Python,因此我们不需要与GPU相关的模块。这为我们节省了一些时间)。

1、启用TBB和Eigen支持:

	view plaincopy to clipboardprint?
 1. cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..

2、启用文档并禁用测试和示例:

	view plaincopy to clipboardprint?
 2. Cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D
    BUILD_EXAMPLES=OFF ..

3、禁用所有与GPU相关的模块:

	view plaincopy to clipboardprint?
 3. cmake -D WITH_OPENCL=OFF -D BUILD_opencv_gpu=OFF -D
 4. BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D
 5. BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D
 6. BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D
 7. BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D
 8. BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF ..

4、设置安装路径和构建类型:

	view plaincopy to clipboardprint?
 1. Cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
    ..

每次输入cmake语句时,它都会打印出结果配置设置。在完成的最终设置中,请确保填写以下字段(以下是我获得的一些重要配置)。这些字段也应在你的系统中适当填写,否则将会发生一些问题。因此,需要检查你是否正确执行了上述步骤。

	view plaincopy to clipboardprint?
 1. ...  
 2. --   GUI:  
 3. --     GTK+ 2.x:                    YES (ver 2.24.19)  
 4. --     GThread :                    YES (ver 2.36.3)  
 5. --   Video I/O:  
 6. --     DC1394 2.x:                  YES (ver 2.2.0)  
 7. --     FFMPEG:                      YES  
 8. --       codec:                     YES (ver 54.92.100)  
 9. --       format:                    YES (ver 54.63.104)  
 10. --       util:                      YES (ver 52.18.100)  
 11. --       swscale:                   YES (ver 2.2.100)  
 12. --       gentoo-style:              YES  
 13. --     GStreamer:  
 14. --       base:                      YES (ver 0.10.36)  
 15. --       video:                     YES (ver 0.10.36)  
 16. --       app:                       YES (ver 0.10.36)  
 17. --       riff:                      YES (ver 0.10.36)  
 18. --       pbutils:                   YES (ver 0.10.36)  
 19. --     V4L/V4L2:                    Using libv4l (ver 1.0.0)  
 20. --   Other third-party libraries:  
 21. --     Use Eigen:                   YES (ver 3.1.4)  
 22. --     Use TBB:                     YES (ver 4.0 interface 6004)  
 23. --   Python:  
 24. --     Interpreter:                 /usr/bin/python2 (ver 2.7.5)  
 25. --     Libraries:                   /lib/libpython2.7.so (ver 2.7.5)  
 26. --     numpy:                       /usr/lib/python2.7/site-packages/numpy/core/include (ver 1.7.1)  
 27. --     packages path:               lib/python2.7/site-packages   
 28. ...

现在使用make命令构建文件,并使用 make install 命令进行安装,make install 仍然以root(系统管理员)身份执行。

	view plaincopy to clipboardprint?
 1. make   
 2. su   
 3. make install

安装结束。所有文件都安装在/usr/local/文件夹中。但是要使用它,Python应该能够找到OpenCV模块,有两种方法:

1.将模块移动到Python路径中的任何文件夹:可以通过在Python终端中输入import sys;print(sys.path)来找到Python路径。它将打印出许多位置。将/usr/local/lib/python2.7/site-packages/cv2.so移至该文件夹中的任何一个。例如,

sumv/usr/local/lib/python2.7/site-packages/cv2.so/usr/lib/python2.7/site-packages

但是,每次安装OpenCV时都必须这样做。

2.将/usr/local/lib/python2.7/site-packages添加到PYTHON_PATH:只需执行一次。只需打开/.bashrc并向其添加以下行,然后注销并返回即可。

	view plaincopy to clipboardprint?
 1. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages

至此,OpenCV安装完成。打开终端,然后尝试:

	view plaincopy to clipboardprint?
 1. import cv2 as cv。

可能遇到的问题

(1) 在make编译opencv时经常出现错误,我遇到的是:

	view plaincopy to clipboardprint?
 1. Linking CXX executable ../../bin/opencv_perf_core /lib/libEGL.so.1: undefined reference to `wl_display_dispatch_queue_pending' collect2: error: ld returned 1 exit status make[2]: * [bin/opencv_perf_core] Error 1 make[1]: *[modules/core/CMakeFiles/opencv_perf_core.dir/all] Error 2  
 2.
 3. make: * [all] Error 2

这时输入:

	view plaincopy to clipboardprint?
 1. yum update libwayland*

然后重新make就可以通过了。

(2) 安装完成后可以进行测试

cd ~/opencv-3.4.1 我遇到了如下问题:

	view plaincopy to clipboardprint?
 1. Package opencv was not found in the pkg-config search path.  
 2. Perhaps you should add the directory containing `opencv.pc'   
 3. to thePKG_CONFIG_PATH environment variable   
 4. No package 'opencv' found

解决方法是:

cp /usr/local/lib/pkgconfig/opencv.pc /usr/lib/pkgconfig

如果还是无法解决,可能原因是在编译安装opencv和export环境变量的时候用的是root权限,而这里调用程序时用的是普通用户,所以无法找到相关文件。

在~/.bash_profile最后添加:

	view plaincopy to clipboardprint?
 1. PKG_CONFIG_PATH=/usr/local/lib/pkgconfig   
 2. export PKG_CONFIG_PATH

重新登录系统,编译程序,成功。
那么在Fredora中安装OpenCV-Python就基本搞定,大功告成。
查看文章汇总页https://blog.csdn.net/weixin_44237705/article/details/107864965
更多openvino技术信息可以入群交流~
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44237705/article/details/107905064
今日推荐