嵌入式多摄像头采集.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于嵌入式系统的多摄像头图像采集 前言 研究背景及意义 随着机器视觉技术的发展,越来越多的机器人工作时需要采集周围环境的图像信息。对某些机器平台来说,周围环境的全景信息更是其进行定位、移动规划时所需的必要信息。 本课题的目标在于搭建基于嵌入式的多摄像头图像采集系统。与一般通过特殊设备(如鱼眼镜头、折射反射镜)来实现全景图像采集功能的系统不同,本课题通过多个市面上一般的USB摄像头设备采集周围的图像信息,再通过图像拼接算法将这些摄像头采集到的图像数据合成全景图片。 一、系统硬件平台介绍 (1) ARM开发板选择 广州天嵌计算机科技有限公司TQ210开发板采用三星Cortex-A8 S5PV210核心板,CPU运行速度最大可达1GHz,32/32KB一级缓存,512KB二级缓存。自带3D图形加速引擎(SGX540),2D图形加速,最大支持8192×8192分辨率。 (2) 摄像头选择 中心微公司出品的具有150度广角的USB摄像头。该摄像头的型号为XS998,有1200万像素,免驱,感光元件类型为CMOS,最大分辨率为1280×720,支持UVC协议 (3) 硬件平台搭建 本课题的最终目标是实现基于嵌入式的多摄像头全景图像采集系统。由于需要采集周围环境的全景图像信息,所以对摄像头的位置有一定的要求。摄像头摆放的相对位置如右图所示。 单摄像头图像采集 一、搭建Android开发环境 (1)安装JDK(Java SE Development Kit); (2)安装Eclipse; (3)安装Android SDK(Software Development Kit); (4)安装ADT(Android Development Tools)插件; (5)在Eclipse中设定Android SDK主目录; 二、相关驱动介绍 (1)V4L2(Video for Linux two)驱动 -9- -9- /dev/videoX V4L2设备号 字符设备驱动程序核心(cdev) V4L2驱动核心 平台V4L2驱动 (Video_device,v4l2_dev) 具体的sensor驱动 (v4l2_subdev) 摄像头硬件设备 用户空间 内核空间 内核空间 硬件 V4L2作用效果图 2)UVC(USB Video Class) UVC(USB Video Class)是由微软发起的一种USB视频类标准,主要用于摄像头,扫描仪等图像设备。该协议主要用于提供一种基USB的视频图像设备的一种视频图像传输的标准。 UVC驱动的实现源码位于drivers/media/video/uvc/uvc_driver.c中。当系统外接USB图像采集设备如USB摄像头时,系统就会调用该文件,检测USB设备所能实现的功能,将该USB图像采集设备注册成一个V4L2视频设备,并将该video设备文件存放在系统的/dev目录下。 三、JNI技术 JNI是Java平台上定义的一套接口标准。它的存在使得Java能和C语言等其它编程语言进行交流,即让Java能调用用C语言编写的代码。具体来看,当Java想调用C语言编写的文件,需先将这个文件生成一个动态链接库,再将这个动态链接库导入到Android程序中。 四、图像采集程序 1.采集流程 打开摄像头驱动程序 打开摄像头驱动程序 获取驱动功能 VIDIOC_QUERYCAP 设置视频格式 VIDIOC_S_FMT 为设备驱动申请帧内存 VIDIOC_QUERYBUF 映射帧缓存到用户空间 mmap() 帧缓冲入队列,交给内核 驱动VIDIOC_QBUF 启动视频采集 VIDIOC_STREAMON 从缓冲序列中获取一帧 视频VIDIOC_DQBUF 帧缓冲入队列,交给内核 驱动VIDIOC_QBUF 停止视频采集 VIDIOC_STREAMOFF 关闭摄像头驱动程序 继续采集 是 否 2.主要步骤 (1) 打开设备文件。 (2) 查看设备功能,若设备能采集图像,设置输入图像的格式 (3) 设置设备采集的图像编码格式为YUYV (4) 向驱动申请帧缓冲,用来存放采集的图像数据。本系统申请了4个缓冲区。 (5) 将申请到的内存缓冲区放入图像采集队列。 (6) 开始数据采集。这里采用内存映射方法,程序直接获取摄像头采集的数据 (7) 处理数据。内存缓冲区将通过驱动从设备处采集的数据交给应用程序处理,自己清空数据后再被放入图像采集队列等待获取图像。 (8) 程序将从内存缓冲区得到的YUYV格式数据转化为RGB格式,在显示屏上显示出来。 (9) 图像采集过程结束,关闭视频设备。 3.编写程序 在清楚了Android系统如何通过USB摄像头采集视频图像信息后,本文编写完成一个简单的应用程序来实

文档评论(0)

20010520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档