1, 卸载安装过程中有瑕疵的 opencv
删除/usr/local/lib 和/usr/local/include/中的所有带 opencv 字眼的
# rm -rf /usr/local/lib/libopencv*
# rm -rf /usr/local/include/opencv*
之后重新编译
2, 安装 ffmpeg
安装 ffmpeg,直接 yum 显示没有 ffmpeg 软件包(因为与 centos7 相应的 epel, rpmforge 包正式版在我写这篇文章的时候,还没有出来,可能缺失某些软件),通过 svn 下载 ffmpeg
# cd /home/zh/software/
# mkdir ffmpeg
# svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
接着开始编译 ffmpeg
# cd ffmpeg
# ./configure --enable-shared
由于 opencv 中的 CMakelists 默认是到/usr 目录下寻找 ffmpeg,故目录设置成/usr
# make
# make install
编译 ffmpeg 出现问题,在 make 阶段出现如下错误:
libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp‘
libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp‘
libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp‘
libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp‘
make: *** [libavcodec/x86/dsputil_mmx.o] Error 1
baidu 后,解决办法如下,将 libavcodec/x86/h264_qpel_mmx.c 中的 ”g”替换为 ”rm”即可,采用如下方式,进入 vi,在 normal 模式下,输入:
%s/"g"/"rm"/g
即可
3, 安装 opencv 的其他依赖项
google: install opencv for python in fedora
发现:
http://docs.opencv.org/trunk/doc/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html
按照上面所述,开始安装 opencv 的依赖项
python 中的依赖项:
yum install cmake
yum install python-devel numpy
yum install gcc gcc-c++
opencv 的依赖项:
yum install gtk2-devel
yum install libdc1394-devel
yum install libv4l-devel
yum install ffmpeg-devel
yum install gstreamer-plugins-base-devel
注意:
gtk2-devel 在 epel7/rpmforge7 软件源中已经包含(至于这两个源的安装,自己 google 吧)
libv4l-devel,gstreamer-plugins-base-devel 也包含了
而 ffmpeg 之前已经安装了,
只有 libdc1394-devel 没有
google 之,在
http://rpm.pbone.net/index.php3/stat/4/idpl/26135132/dir/redhat_el_7/com/libdc1394-devel-2.2.0-4.el7.nux.x86_64.rpm.html
网站能够找到 libdc1394-devel-2.2.0-4.el7.nux.x86_64.rpm
安装 libdc1394-devel 时,发现还缺少 libdc1394.so.22()(64bit)
google 之,在
http://rpm.pbone.net/index.php3/stat/4/idpl/26135130/dir/redhat_el_7/com/libdc1394-2.2.0-4.el7.nux.x86_64.rpm.html
能够找到 libdc1394-2.2.0-4.el7.nux.x86_64.rpm
先安装 libdc1394-2.2.0-4.el7.nux.x86_64.rpm,
# yum localinstall libdc1394-2.2.0-4.el7.nux.x86_64.rpm,安装成功
再安装 libdc1394-devel-2.2.0-4.el7.nux.x86_64.rpm
# yum localinstall libdc1394-devel-2.2.0-4.el7.nux.x86_64.rpm,安装成功
至此,opencv 必须的依赖项已经全部安装完毕
http://docs.opencv.org/trunk/doc/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html
这个网站上还给了其他的一些可选依赖项,可以视情况而装
4, 安装 opencv
在网上下载 opencv 源码
解压后
# cd opencv
# mkdir release
# cd release
# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local-D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
# make
wait long long time ......
# make install
大功告成
5, python 路径配置
# cp /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages
# export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
然后打开 python,import cv2 ,发现已经 OK 了
发现 import cv2 已经无误了!!!
It‘s so beautiful!!!
6, opencv 环境变量配置
(eclipse 的安装以及 C/C++的安装,此处不讲)
切换到 root 用户# vi /etc/ld.so.conf.d/opencv.conf
加入/usr/local/lib
# ldconfig
# cd 返回默认目录
# vi .bashrc 在最后加上 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 和 export PKG_CONFIG_PATH 两行
# reboot
7, 配置 eclipse
重启后,打开 eslipse,新建 C++工程
工程建好后,进入
Project->Properties->C/C++ Build->Settings
在 GCC C++ Compiler->includes
include paths 中加入:
/usr/local/include/opencv
在 GCC C++ Linker->Libraries 里
Library search path 里,加入
/usr/local/lib
Libraries 里加入
opencv_core; opencv_imgproc; opencv_highgui; opencv_ml; opencv_video; opencv_features2d; opencv_calib3d; opencv_objdetect; opencv_contrib; opencv_legacy; opencv_flann
下面写入测试代码:
#include <iostream> #include <cv.h> #include <highgui.h> using namespace std; int main ( int argc, char **argv ) { IplImage *pImg = cvLoadImage("/home/zh/1.jpg"); cvNamedWindow("Image", 1); cvShowImage("Image", pImg); cvWaitKey(0); cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; }
如果正确显示图片,那就是无误了。
ELSE:
发现 eclipse 一个小小的坑爹的地方,命名代码没有错误,他还总是画红色波浪线,说有错误,说不存在该变量或者啥的,但是运行是无误的,如下图示:
对 eclipse 甚是无语
CentOS7配置opencv for python && eclipse c/c++