安装环境
操作系统:
Red Hat Enterprise Linux Server 6.3
相关软件:
ffmpeg-0.8.15.tar.bz2、cmake-3.5.1.tar.gz、OpenCV-2.3.1a.tar.bz2
下载地址:
FFmpeg:
https://ffmpeg.org/releases/ffmpeg-0.8.15.tar.bz2
CMake:
https://cmake.org/files/v3.5/cmake-3.5.1.tar.gz
OpenCV:
http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2
安装过程
FFmpeg安装
说明:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。为OpenCV编译视频相关库提供支持。注意FFmpeg需要与OpenCV匹配。OpenCV-2.3.1版本及其以前的版本需要使用ffmpeg-0.7.x版本及其以前版本进行编译。
步骤:
1.解压
tar xvf ffmpeg-0.8.15.tar.bz2
cd ffmpeg-0.8.15
2.配置
./configure --enable-shared --prefix=/usr //生成Makefile,安装位置/usr
如果配置中遇到错误yasm/nasm not found or too old.请先下载并安装yasm
下载地址:
http://yasm.tortall.net/Download.html
安装步骤:
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix=/usr //生成Makefile,安装位置/usr
make
make install
3.编译
make //通过Makefile编译源代码
4.安装
make install //文件安装在/usr/路径下
5.测试
ffmpeg //执行ffmpeg命令显示ffmpeg版本号和帮助信息表示安装成功
CMake安装
说明:
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。用它来产生OpenCV编译时用到的Makefile文件。
步骤:
1.解压
tar xvf cmake-3.5.1.tar.gz
cd cmake-3.5.1
2.配置
./configure --prefix=/usr //生成Makefile,安装位置/usr
3.编译
make //通过Makefile编译源代码
4.安装
make install //文件安装在/usr/路径下
5.测试
cmake //执行cmake命令显示cmake版本号和帮助信息表示安装成功
OpenCV安装
说明:
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库。编译和运行调用OpenCV库函数的程序时需要用到OpenCV库和头文件。
1.解压
tar xvf OpenCV-2.3.1a.tar.bz2
cd OpenCV-2.3.1
2.配置
cmake -DWITH_FFMPEG=ON -DCMAKE_INSTALL_PREFIX=/usr //生成Makefile,支持播放视频,安装位置/usr
ccmake . //命令查看相关编译选项是否配置成功
3.编译
make //通过Makefile编译源代码
4.安装
make install //文件安装在/usr/路径下
5.配置(默认情况下不需要设置)
vim /etc/ld.so.conf.d/opencv.conf //创建pkg-config配置文件
/usr/lib //添加配置文件/usr/lib/pkgconfig/opencv.pc位置
ldconfig //生效配置
6.测试
cd samples/c/ //进入样本程序中编译程序
g++ `pkg-config --libs --cflags opencv` facedetect.cpp -o facedetect
/*
编译源文件,g++表示编译cpp程序,`pkg-config --libs --cflags opencv`表示编译链接库和头文件,通过/usr/lib/pkgconfig/opencv.pc可以查看文件位置
*/
./facedetect lena.jpg //运行编译好的程序,识别出人脸表示安装成功
下面代码用来测试播放视频和摄像头,编译程序。运行./ceamer打开摄像头表示摄像头正常工作。运行./ceamer movie.avi打开视频表示播放器正常工作。运行程序时按Esc退出。
ceamer.cpp
#include <cv.h> #include <highgui.h> int main(int argc, char** argv){ CvCapture* capture; IplImage* frame; if(argc == 1){ capture = cvCreateCameraCapture(0); }else{ capture = cvCreateFileCapture(argv[1]); } cvNamedWindow("hello", CV_WINDOW_AUTOSIZE); while(1){ frame = cvQueryFrame(capture); if(!frame){ break; } cvShowImage("hello", frame); char c = cvWaitKey(33); if(c == 27){ break; } } cvReleaseCapture(&capture); cvDestroyWindow("hello"); return 0; }