由于项目需要,要把之前的工作移植到CentOS上。由于之前没有真正下手使用过Linux的系统,所以这次算是练手了。
1 环境部署
1.1 安装VMWare9
1.2 新建虚拟机,安装CentOS6.4-x86_64
虚拟机配置根据计算机硬件和需求进行配置,网络设置成bridge。如果安装过程中出现VT-x错误,需要在BIOS中开启VT-x,AMD平台未测。
1.3 安装OpenCV2.3.1
参考
blog.csdn.net/xiaohouzuoxin/article/details/9831263
需要单独下载的默认放在/home/xx/Downloads
1.3.1 部署yum源
在mirror.163.com中获得CentOS的repo文件,覆盖本地的文件
/etc/yum.repo.d/CentOS-Base.repo
1.3.2 准备环境
su
yum install gcc-c++
yum install gtk+-devel.i686
yum install gimp-devel.i686
yum install gimp-devel-tools.i686
yum install gimp-help-browser.i686
yum install zlib-devel.i686
yum install libtiff-devel.i686
yum install libjpeg-devel.i686
yum install libpng-devel.i686
yum install gstreamer-devel.i686
yum install libavc1394-devel.i686
yum install libraw1394-devel.i686
yum install libdc1394-devel.i686
yum install jasper-devel.i686
yum install jasper-utils.i686
yum install cmake
yum install swig
yum install python
yum –y install libtool
yum install nasm.i686
将*.i686换成*.x86_64,如果出现yum的软件包没有,用yum search 软件包名搜索一下,在yum install找到的软件包名
1.3.3 ffmpeg
参考
blog.csdn.net/xygl2009/article/details/12998497
在官网找ffmpeg-0.8稳定版,下载后解压,Open in Terminal
./configure –enable-shared –enable-gpl –enable-swscale–disable-yasm
make
make install
所有的库安装在/usr/local/lib下,所有的头文件安装在/usr/local/include下
测试ffplay,但是会报错。找到config.mak文件并打开,找到CONFIG_FFPLAY=yes,去掉前面的!,再make。提示缺少SDL。安装SDL
yum install SDL
再安装缺少的几个库SDL_mixer-2.0.0,SDL_image-2.0.0和SDL_rtf-0.1.0。但是make时会出错,定位的错误是SDL的版本号太旧,下载最新的SDL2-2.0.3并安装,问题解决。
make
make install
1.3.4 pkg-config
参考blog.csdn.net/firefoxbug/article/details/7554409
pkg-config通过各个库文件中的.pc文件识别已安装的库文件的信息。这些.pc文件是由各库的安装程序自己生成的。通过PKG_CONFIG_PATH来设置pkg-config进行更新。
1.3.5 cmake
yum install cmake
1.3.6 OpenCV2.3.1
解压后Open in Terminal,
mkdir release
cd release
cmake ../
出错,定位在CMakeLists.txt中的第44行。简单的作法是注释掉这一行。再次
cmake ../
生成列表中ffmpeg相关的都是no。执行
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
再次执行
cmake ../
生成列表中ffmpeg相关项都是yes
make
make install
所有的库安装在/usr/local/lib下,所有的头文件安装在/usr/local/include下。测试OpenCV和ffmpeg之前还需将路径更新
vi /etc/ld.so.conf
最后加入一行 /usr/local/lib
ldconfig
1.4 CodeBlocks-12.11
参考
www.ienter.org/html/2013/07/117.html
下载codeblocks-12.11,安装。还需要安装wxGTK和xterm
2 例程调试
参考
http://www.07net01.com/program/123599.html
http://digitus.itk.ppke.hu/~losda/anyagok/OpenCV/CodeBlocks_OpenCV.pdf
默认路径/home/xx/Codes/test/test_opencv
打开Code::blocks
新建工程,类型为Console application,使用语言C++,工程名test_opencv,一路next就好了。
在sources中双击main.cpp
输入代码
#include <stdio.h> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp> using namespace cv; using namespace std; int main( int argc, char ** argv ) { if (argc == 2) { Mat img; img = imread(argv[1]); imshow(“test”, img); waitKey(0); return 0; } return -1; }
配置工程的环境变量等
右键左手边的test_opencv,选择Build options,选择对话框左手边的test_opencv,然后选择Linker settings,在Linklibraries中加入使用到的lib
/usr/local/lib/libopencv_highgui.so.2.3.1
/usr/local/lib/libopencv_imgproc.so.2.3.1
/usr/local/lib/libopencv_core.so.2.3.1
选择Search directories,在Compiler中加入include的位置
/usr/local/include/opencv2
/usr/local/include
在Linker中加入lib的位置
/usr/local/lib
最后点击确定,进行编译,生成的文件在../bin/Release里面
在Terminal中进入该路径,执行
./test_opencv xx.xx
显示图片说明OpenCV能够正常使用了。下面测试视频播放功能
#include <stdio.h> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp> #include <opencv2/video/video.hpp> using namespace cv; using namespace std; int main( int argc, char ** argv ) { Matimg; VideoCapturepCap; if(!pCap.isOpened()) return-1; while(1) { pCap>> img; imshow(“test”,img); if(waitKey(10) == 27) break; } return-1; }
在Linker settings,Link libraries中加入
/usr/local/lib/libopencv_video.so.2.3.1
编译
在Terminal中进入该路径,执行
./test_opencv xx.xx
播放视频,按ESC退出。