现在的位置: 首页 > 综合 > 正文

在TQ2440实验板上进行linux+qtopia++ov9650+opencv的图像处理系统

2017年09月18日 ⁄ 综合 ⁄ 共 2063字 ⁄ 字号 评论关闭

       暑假的这两三个星期一直学校在忙项目的事情。本人今年大三,自动化专业,在今年5月份的时候申请了学校的国家级大学生创新创业训练计划项目(简称国创),项目题目是:轮式双目自主避障小型机器人研发。由于项目中需要用到很多模式识别方面的知识,而模式识别是研究生的一个研究方向,本科生很少有机会接触。所幸的是我之前跟一位老师做过一个模式识别方面的项目,使用过OpenCV,而且使用的还算比较熟,再然后自己在学校的一个百步梯项目里面承担行人识别方面的工作,所以在这次国创中还是有一定模式识别的基础。

      项目关键的地方主要是能够在ARM9(TQ2440)上根据所采集(OV9650)的图像和我预先给的模板,来判断图像中是否有我给的模板的内容在,有的话框出来。其实这个我在Windows下,最常用的就是两个函数:cvMatchShapes(速度慢)和cvMatchTemplate(速度快)。但是由于这次的项目小车是运动的,所以目标相对小车,它的大小是变化的,但是形状不会变。还有我们使用两个摄像头(这也是我们项目的创新点),对目标进行多角度的匹配。使用Opencv的函数来进行模式识别,在Windows平台上基本基本没有什么值得考虑的地方,但是在嵌入式平台上,一定的考虑处理器的速度问题。像现在我们arm9的频率在500M左右,我以前在Windows上匹配一张图像(使用cvMatchShapes)时间达到半分钟,这样子假如在ARM9上跑的话,非得进行算法优化什么的。

     好了废话不说,进入正题,我这个月最要任务是在TQ2440实验板上把linux+qtopia++ov9650+opencv把平台给搭建起来。下面说一下各个版本内容:

   TQ2440:S3C2440A芯片,4.3屏幕

    linux内核:2.6.30.4

   文件系统:qtopia_2.2.0

   摄像头:OV9650

   OpenCV版本:OpenCV-2.1.0

   以下逐个分析平台各部分的实现

   1、实验板 。ARM9作为图像处理器,有点勉强,因为它速度不够快,特别是在图像处理的浮点数运算方面。我购买的是TQ2440实验板,但是我在这里抱怨一下,TQ的网上资料不够,不过多整体还不错。反正实验板大家看自己的爱好吧,因为这个差别一般都不大。初学者入门更要选择ARM9,资料齐全。

   2、内核。内核的话,我就不废话了,现在使用2.6.30版本的还比较多。

   3、文件系统。我在文件系统的选择上走了不少弯路。由于实验板给的资料里面,qt2的开发资料比较少(网上关于qt2的基本只有一本书:qtopia编程之道),但是网上qt4的资料有超多。所以一开始我就选择了qtopia文件系统来编程,实验板提供的qtopia文件系统比较稳定,qtopia是一个桌面应用。但是我在写应用程序的时候,遇到好多问题,网上很少有解答的。然后我转到qt4,qt4文件系统不大稳定,经常假死,而且在ARM9上跑qt4有点不大行。最坑爹的是天嵌提供的所有教程都是在Fedora10上面开发的,但是在Fedora10上面不能正常使用qt
designer,那还怎么在qt4上玩,于是我又转回去使用qt2。也就是我所有后续的控制程序都是在qtopia上完成。有些人问,问什么一定要使用qt的文件系统,因为我写的是有图形操作界面的控制程序。

  4、摄像头。摄像头现在大部分使用OV9650,而且这个资料还比较多,他的像素不是很大,默认是320*240.

  5、OpenCV。OpenCV的话使用2.1版本的比较好,可能网上有使用2.3版本的,但是2.3版本变化比较大,特别是头文件增加了一个文件件,编译以后库文件名字也不大相同。我以前也编译过1.0版本的,但是1.0版本的使用需要配置pkg-config,而且1.01版本比较老,也不建议使用。

 

   移植opencv:我想大家推荐一篇文章:http://blog.csdn.net/embeddedman/article/details/7416934

   先到OpenCV官网下载linux版本的源码,完全照着文章做就行了,只不过移植的是2.1版本。

   移植完以后就是配置头文件路径,在安装目录下有 bin,include,lib,share四个文件夹

 

进入include文件夹会见到我们熟悉的头文件名,右击任意一个头文件,复制下所在路径,像我的是/opt/EmbedSky/opencv/opencv_build/include,然后就是打开我们写的Makefile文件,添加我们使用到的头文件和库文件,网上有些人说在.pro文件上添加,这也可以,但是由于我在qtopia上的.pro文件转成的Makefile文件还需要修改,所以一直在Makefile上面修改,见图说话(红色为我添加的那一部分):

   最后再把opencv安装路径下的5个库文件拷贝到实验板的/lib文件加下

 

 

项目初步效果图(测试过OpenCV函数可用,把图像转成灰度图):

 

抱歉!评论已关闭.