二、安装OpenCV
1. 预备工作:
(2)安装cmake。在终端输入安装指令:
- sudo apt-get install cmake
待完成安装后,在终端输入以下指令,可以查看安装cmake的版本信息。
2. 安装步骤:
(1)更新和升级系统
- sudo apt-get update
- sudo apt-get upgrade
(2)安装依赖项
- sudo apt-get install pkg-config libgtk2.0-dev build-essential libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev
(3)下载并解压OpenCV2.4.9至Ubuntu12.04的用户目录下
- cd ~
- wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
- unzip opencv-2.4.9.zip
- cd opencv-2.4.9
(4)OpenCV 2.0之后的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.8.7。最后的两个点“..”的意思是:当前目录在build文件夹里,所以在编译的时候需要回到OpenCV的主菜单。
- mkdir build
- cd build
- cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..
运行cmake的时候,会在终端出现依赖项的配置列表如下:
在以上的配置列表中,观察主要的依赖软件都已配置到位,如FFMPEG、QT、OPENGL和V4L2等,显示须为YES。
(5)编译和安装OpenCV2.4.9。make编译是一个漫长的过程,建议去小憩一会儿或者喝喝茶活动活动筋骨,待编译进度到100%之后,进行安装。安装需在root权限下进行。
(6)配置OpenCV。
- sudo gedit /etc/ld.so.conf.d/opencv.conf
输入库文件路径,保存并退出。
(7)使库文件生效,在终端输入
(8)设置环境变量
- sudo gedit /etc/bash.bashrc
在最后加入以下两行代码
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
- export PKG_CONFIG_PATH
保存,关闭环境变量设置文档。关闭终端,重启Ubuntu。至此,Ubuntu12.04下OpenCV2.4.9的安装结束。
三、验证OpenCV的安装:用USB摄像头实现图像采集。
实现步骤:
1. 打开终端,进入用户目录,创建webcam_capture.cpp
- cd ~
- gedit webcam_capture.cpp
2. 输入图像采集程序
- #include "cxcore.h"
- #include "highgui.h"
- #include "cv.h"
- using namespace std;
- int main()
- {
- IplImage* pFrame = NULL;
- cvNamedWindow("result", 1);
- CvCapture* pCapture = cvCreateCameraCapture(-1);
- cvSetCaptureProperty(pCapture,CV_CAP_PROP_FRAME_WIDTH,320);
- cvSetCaptureProperty(pCapture,CV_CAP_PROP_FRAME_HEIGHT,240);
- while(true)
- {
- pFrame = cvQueryFrame( pCapture );
- if(!pFrame) break;
- char c = cvWaitKey(33);
- if(c == 32) break;
- cvShowImage("result", pFrame);
- }
- return 0;
- }
3. 编译和运行
- g++ webcam_capture.cpp -o webcam_capture `pkg-config --cflags --libs opencv`
- ./webcam_capture
4. 运行效果
四、问题总结
1. 关于OpenCV下的file.cpp文件编译指令,最常用的方法就是用“pkg-config”进行编译,其具体格式为
- g++ file.cpp -o file `pkg-config --cflags --libs opencv`
其中,符号“`”并非单引号,而是数字键盘上和波浪线“~”在一起的那个点。
“pkg-config”工具主要有以下几个功能:(1)检查库的版本号,如果所需库的版本不能满足要求,会打印错误信息;(2)“--cflags”获得编译预处理的参数,如宏定义、头文件的位置;(3)“--libs”获得库及其它依赖库的位置,文件名和链接参数等。
可以在终端输入以下指令获得头文件和库文件的相关目录
- pkg-config --cflags opencv
- pkg-config --libs opencv
2. 在运行USB摄像头图像采集程序一段时间以后,会出现视频卡顿的现象,并在终端显示“select timeout”,我起初以为是分辨率设置的问题,所以分别设置了320*240、640*480、800*600等几种分辨率,运行之后仍然会出现卡顿。所以,也借这篇帖子在论坛求助,希望各位大神给出修改意见。 下次帖子的主要内容:将OpenCV移植到OK210开发。