【OK210试用体验】之(五)——在Ubuntu12.04安装OpenCV2.4.9并实现USB摄像头C270图像采集 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】之(五)——在Ubuntu12.04安装OpenCV2.4.9并实现USB摄像头C270图像采集

本帖最后由 郎中令2000年 于 2015-12-6 20:57 编辑

    试用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公司发起和建立。OpenCVPythonmatlab等多种计算机语言提供了接口,它的库函数采用了CC++编写,可以在WindowsLinuxMac OSAndroid等多种操作系统上面运行。采用OpenCV做图像处理,可以使显著提高编程效率可以到http://www.sourceforge.net/projects/opencvlibrary 下载需要的版本。
    2. UVC摄像头C270简介
    C270摄像头是罗技公司生产的一款经典摄像头,采用CMOS感光器件,300万像素,USB2.0接口,手动实现对焦,支持RGB24YUV422两种数据格式,最大帧数为15/秒。选用该摄像头的一个重要原因是,该摄像头是UVC(USB Video Class)摄像头。UVC是一个开放的标准,拥有维护良好的驱动,它属于内核代码的一部分。插入摄像头后就可以工作,而无须编译或安装额外的驱动
    查看自己手中的USB摄像头是否是UVC摄像头的方法如下:
    (1)在终端输入lsu***,查看该摄像头的ID号
    (2)在网站http://www.ideasonboard.org/uvc/中比对显示的ID号,若“Status”一栏为“绿色的对号”则表示该摄像头为UVC摄像头


   
    二、安装OpenCV
    1. 预备工作:
    (1)安装交叉编译工具:arm-linux-gcc4.3.2,具体步骤参见本人试用贴之(三)——Ubuntu下安装gcc交叉编译器和hello.c的实现https://bbs.elecfans.com/jishu_500508_1_1.html
    (2)装cmake。在终端输入安装指令:
  1. sudo apt-get install cmake
复制代码
待完成安装后,在终端输入以下指令,可以查看安装cmake的版本信息。
  1. cmake --version
复制代码
    2. 安装步骤:
    (1)更新和升级系统
  1. sudo apt-get update
  2. sudo apt-get upgrade
复制代码
    (2)安装依赖项
  1. 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的用户目录下
  1. cd ~
  2. wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
  3. unzip opencv-2.4.9.zip
  4. cd opencv-2.4.9
复制代码
    (4)OpenCV 2.0之后的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.8.7。最后的两个点“..”的意思是:当前目录在build文件夹里,所以在编译的时候需要回到OpenCV的主菜单。
  1. mkdir build
  2. cd build
  3. 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权限下进行。
  1. make
  2. sudo make install
复制代码

    (6)置OpenCV
  1. sudo gedit /etc/ld.so.conf.d/opencv.conf
复制代码
    输入库文件路径,保存并退出。   
  1. /usr/local/lib
复制代码
   
    (7)使库文件生效,在终端输入
  1. sudo ldconfig
复制代码
    (8)设置环境变量
  1. sudo gedit /etc/bash.bashrc
复制代码
    在最后加入以下两行代码
  1. PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  2. export PKG_CONFIG_PATH
复制代码
    保存,关闭环境变量设置文档。关闭终端,重启Ubuntu。至此,Ubuntu12.04下OpenCV2.4.9的安装结束。

    三、验证OpenCV的安装:用USB摄像头实现图像采集。
    实现步骤:
    1. 打开终端,进入用户目录,创建webcam_capture.cpp
  1. cd ~
  2. gedit webcam_capture.cpp
复制代码
    2. 输入图像采集程序
  1. #include "cxcore.h"
  2. #include "highgui.h"
  3. #include "cv.h"
  4. using namespace std;

  5. int main()
  6. {
  7. IplImage* pFrame = NULL;
  8. cvNamedWindow("result", 1);
  9. CvCapture* pCapture = cvCreateCameraCapture(-1);
  10. cvSetCaptureProperty(pCapture,CV_CAP_PROP_FRAME_WIDTH,320);
  11. cvSetCaptureProperty(pCapture,CV_CAP_PROP_FRAME_HEIGHT,240);

  12. while(true)
  13. {
  14. pFrame = cvQueryFrame( pCapture );
  15. if(!pFrame) break;

  16. char c = cvWaitKey(33);
  17. if(c == 32) break;
  18. cvShowImage("result", pFrame);
  19. }

  20. return 0;
  21. }
复制代码

    3. 编译和运行
  1. g++ webcam_capture.cpp -o webcam_capture `pkg-config --cflags --libs opencv`
  2. ./webcam_capture
复制代码
    4. 运行效果

    四、问题总结
    1. 关于OpenCV下的file.cpp文件编译指令,最常用的方法就是用“pkg-config”进行编译,其具体格式为
  1. g++ file.cpp -o file `pkg-config --cflags --libs opencv`
复制代码
    其中,符号“`”并非单引号,而是数字键盘上和波浪线“~”在一起的那个点。
    “pkg-config”工具主要有以下几个功能:(1)检查库的版本号,如果所需库的版本不能满足要求,会打印错误信息;(2)“--cflags”获得编译预处理的参数,如宏定义、头文件的位置;(3)“--libs”获得库及其它依赖库的位置,文件名和链接参数等。
    可以在终端输入以下指令获得头文件和库文件的相关目录
  1. pkg-config --cflags opencv
  2. pkg-config --libs opencv
复制代码

    2. 在运行USB摄像头图像采集程序一段时间以后,会出现视频卡顿的现象,并在终端显示“select timeout,我起初以为是分辨率设置的问题,所以分别设置了320*240、640*480、800*600等几种分辨率,运行之后仍然会出现卡顿。所以,也借这篇帖子在论坛求助,希望各位大神给出修改意见。
    下次帖子的主要内容:将OpenCV移植到OK210开发
   

13个回复

杨永胜 发表于 2015-8-3 09:24:16
不错啊楼主
回复 1

举报 使用道具

郎中令2000年 发表于 2015-8-3 22:51:57

你也在做嵌入式视觉么?是的话多多交流~~
杨永胜 发表于 2015-8-4 20:31:49
郎中令2000年 发表于 2015-8-3 22:51
你也在做嵌入式视觉么?是的话多多交流~~

我不会呢现在
ycdhonker 发表于 2015-8-11 19:41:48
请问opencv移植到板子上了吗
Murphy 发表于 2015-8-12 21:42:58
必须赞一个。。。正准备移植呢,最好能直接移植到板子上,,先来学习了
1229305710 发表于 2015-8-13 17:24:29
楼主不错,赞一个~~
回复 1

举报 使用道具

冯思宇 发表于 2015-8-13 17:26:16
学长,不错哦,我之前也是想移植OpenCV视觉库,不过在网上找的资料都有问题,失败了,所以就没继续下去了,有了这篇精华帖,真是帮了我大忙~~
头像被屏蔽
提示: 该帖被管理员或版主屏蔽
回复 1

举报 使用道具

╭哈哈 发表于 2017-3-27 21:15:34
楼主,你好啊,你孩子应该1岁多了吧。我按照你的过程编译的,运行opencv自带的C里的程序是可以的,可是按你这个读不出来图像,错误如下:
(process:5653): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

(process:5653): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

(process:5653): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
QGtkStyle was unable to detect the current GTK+ theme.
Qt: Session management error: None of the authentication protocols specified are supported
init done
能否指点12啊,不胜感激啊
郎中令2000年 发表于 2017-3-31 09:32:27
╭哈哈 发表于 2017-3-27 21:15
楼主,你好啊,你孩子应该1岁多了吧。我按照你的过程编译的,运行opencv自带的C里的程序是可以的,可是按你这个读不出来图像,错误如下:
(process:5653): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a rep ...

看你错误的最后两行,显示没有GTK+或者QT,可能是你之前的安装包没有安装完整,显示图像是必须有这两个中的一个的。最好再重新编译一遍。
╭哈哈 发表于 2017-3-31 16:08:31
我是有QT的,因为我在学QT程序,一直用来练习写代码的。你说的重新编译是OPencv重新编译吗?
头像被屏蔽
提示: 该帖被管理员或版主屏蔽
回复 1

举报 使用道具

孙世川 发表于 2018-9-13 17:57:21
您好楼主 我刚刚接触opencv 按照您的步骤做下来, 最后结果是这样init done
opengl support available
您那块显示图像是用的QT显示吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-24 06:12 , Processed in 0.842658 second(s), Total 83, Slave 61 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表