- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1页/共21页USB摄像头实验的学习课件第2页/共21页2.实验设备 硬件: PC机1台 MagicARM2410教学实验开发平台 1台 USB摄像头(OV511芯片组) 1个 软件: RedHat Linux 9.0操作系统 Windows 98/2000/XP操作系统(可选) 嵌入式Linux开发环境第3页/共21页3.实验内容 通过使用video4linux的API函数从视频设备(OV511摄像头)中读取图像数据,然后将这些数据写入Frame Buffer,使摄像头采集到的图像在液晶屏中显示出来。第4页/共21页4.实验预习要求(1) 熟悉嵌入式Linux应用程序的编写及其编译调试的方法。 (2) 熟悉nfs文件系统的使用。(3) 复习FrameBuffer模块应用实验和video4linux模块应用实验。第5页/共21页5.实验原理采集程序实现过程: 首先打开视频设备,视频采集设备在系统中对应的设备文件为/dev/video0,采用系统调用函数fd = open ( /dev/video0, O_RDWR ),fd是设备打开后返回的文件描述符(打开错误返回-1),以后的系统调用函数就可使用它来对设备文件进行操作了。接着,利用ioct1(fd, VIDIOCGCAP, grab_cap)函数读取struct?video _capability中有关图像捕捉设备的信息。该函数成功返回后,这些信息从内核空间拷贝到用户程序空间grab_cap各成员分量中,使用printf函数就可得到各成员分量信息,例如printf(maxheight=%d, grab_fd.maxheight)获得最大垂直分辨率的大小。 第6页/共21页5.实验原理还可以使用ioct1( fd, VIDIOCGPICT, grab_pic)函数读取视频采集设备缓冲voideo_picture信息。在用户空间程序中可以改变这些信息,具体方法为先给变量赋新值,再调用VIDIOCSPICT?ioct1函数,如程序清单 1.1所示:程序清单 1.1 改变图像捕捉设备缓冲信息grab_fd.depth = 3;if ( ioct1( fd, VIDIOCSPICT, grab_pic ) 0 ){ perror(VIDIOCSPICT);return?-1;}第7页/共21页5.实验原理 完成以上初始化设备工作后,就可以对视频图像截取了,有两种方法:一种是read()直接读取;另外一种mmap()内存映射。Read()通过内核缓冲区来读取数据;而mmap()通过把设备文件映射到内存中,绕过了内核缓冲区,最快的磁盘访问往往还是慢于最慢的内存访问,所以mmap()方式加速了I/O访问。另外,mmap()系统调用使得进程之间通过映射同一文件实现共享内存,各进程可以像访问普通内存一样对文件进行访问,访问时只需要使用指针而不用调用文件操作函数。因为mmap()的以上优点,所以在程序实现中采用了内存映射方式,即mmap()方式。第8页/共21页5.实验原理利用mmap()方式视频裁取具体进行操作如下: ①先使用ioct1( fd, VIDIOCGMBUF, grab_vm)函数获得摄像头存储缓冲区的帧信息,之后修改voideo_mmap中的设置,例如重新设置图像帧的垂直及水平分辨率、彩色显示格式。可利用如下语句:grab_buf.height = 240;grab_buf.width = 320;grab_buf.format = VIDEO_PALETTE_RGB24; ②接着把摄像头对应的设备文件映射到内存区,具体使用grab_data = (unsigned?char*) mmap( 0, grab_vm.size, PROT_READ|PROT_WRITE, MAP_SHARED, grad_fd, 0 )操作。这样设备文件的内容就映射到内存区,该映射内容区可读可写并且不同进程间可共享。该函数成功时返回映像内存区的指针,出错时返回值为-1。 第9页/共21页5.实验原理下面对单帧采集和连续帧采集进行说明:单帧采集 在上面获取的摄像头存储缓冲区帧信息中,最多可支持的帧数(frames的值)一般为两帧。对于单帧采集只需设置grab_buf.frame=0,即采集其中的第一帧,使用ioctl( fd, VIDIOCMCAPTURE, grab_buf )函数,若调用成功,则激活设备真正开始一帧图像的截取,是非阻塞的。接着使用ioct1( fd, VIDIOCSYNC, frame )函数判断该帧图像是否截取完毕,成功返回表示截取完毕,之后就可把图像数据写入到Frame Buffer。第10页/共21页5.实验原理连续帧采集 在单帧的基础上,利用grab_fd.frames
您可能关注的文档
- 人群营养基础试题库公共营养师考试资料精.pptx
- Chap32基础营养学的学习课件.pptx
- 人力资源管理协会介绍.pptx
- 六章生物群落的组成与结构四节图片.pptx
- 冠心病介入治疗的护理.pptx
- 内科学——白血病.pptx
- D影像原理的学习材料.pptx
- 人教生物必修二同步导学章末归纳整合.pptx
- 农产品溯源二维码应用系统方案.pptx
- 反射是神经活动的基本方式.pptx
- 云南省临沧市民族中学2022-2023学年高二上学期期末政治(解析版).docx
- 云南省楚雄彝族自治州2023学年高二上学期期末教育学业质量监测政治(解析版).docx
- 云南省保山市文山州2022-2023学年高二上学期期末考试思想政治(解析版).docx
- 云南省临沧市民族中学2022-2023学年高二上学期期末政治(原卷版).docx
- 云南省玉溪市2022-2023学年高二上学期期末教学质量检测政治(原卷版).docx
- 湖北省武汉市武昌区2023-2024学年高三上学期期末质量检测化学Word版.docx
- 云南省昆明市第一中学2022-2023学年高二上学期期末考试政治(原卷版).docx
- 云南省昆明师范专科学校附属中学2022-2023学年高二上学期期末考试政治(原卷版).docx
- 云南省玉溪市2022-2023学年高二上学期期末教学质量检测政治(解析版).docx
- 云南省马关县第一中学校2022-2023学年高二上学期期末考试政治(原卷版).docx
文档评论(0)