试用OK210开发板最初的目的,就是设计一款类人足球机器人的视觉识别系统。在接下来的试用实验中,我会一步步朝这个目标迈进。今天帖子的主要内容就是在Ubuntu12.04上安装图像处理软件OpenCV,并用简单的程序实现UVC摄像头C270的图像采集。
硬件平台:Windows7 64 bit + USB摄像头C270
软件平台:VMware8.0.2 + Ubuntu12.04 + arm-linux-gcc4.3.2 + OpenCV2.4.9
一、知识补充
1.什么是OpenCV
OpenCV是一款开源的图像处理库,于1999年由Intel公司发起和建立。OpenCV为Python、Matlab等多种计算机语言提供了接口,它的库函数采用了C和C++编写,可以在Windows、Linux、Mac OS和Android等多种操作系统上面运行。采用OpenCV做图像处理,可以使显著提高编程效率。可以到http://www.sourceforge.net/projects/opencvlibrary 下载需要的版本。
2. UVC摄像头C270简介
C270摄像头是罗技公司生产的一款经典摄像头,采用CMOS感光器件,300万像素,USB2.0接口,手动实现对焦,支持RGB24和YUV422两种数据格式,最大帧数为15帧/秒。选用该摄像头的一个重要原因是,该摄像头是UVC(USB Video Class)摄像头。UVC是一个开放的标准,拥有维护良好的驱动,它属于内核代码的一部分。插入摄像头后就可以工作,而无须编译或安装额外的驱动。
查看自己手中的USB摄像头是否是UVC摄像头的方法如下:
(1)在终端输入lsusb,查看该摄像头的ID号;
(2)在网站http://www.ideasonboard.org/uvc/中比对显示的ID号,若“Status”一栏为“绿色的对号”则表示该摄像头为UVC摄像头。
- sudo apt-get install cmake
- cmake --version
- sudo apt-get update
- sudo apt-get upgrade
- 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
- 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
- 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 ..
- make
- sudo make install
(6)配置OpenCV。
- sudo gedit /etc/ld.so.conf.d/opencv.conf
- /usr/local/lib
- sudo ldconfig
- sudo gedit /etc/bash.bashrc
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
- export PKG_CONFIG_PATH
- cd ~
- gedit webcam_capture.cpp
- #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;
- }
- g++ webcam_capture.cpp -o webcam_capture `pkg-config --cflags --libs opencv`
- ./webcam_capture
- g++ file.cpp -o file `pkg-config --cflags --libs opencv`
- pkg-config --cflags opencv
- pkg-config --libs opencv
来源:https://www.cnblogs.com/mataiyuan/p/7852297.html