1 / 21
文档名称:

1.实验目的(1)掌握video4linux常用api函数的使用方法。.ppt

格式:ppt   大小:95KB   页数:21页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

1.实验目的(1)掌握video4linux常用api函数的使用方法。.ppt

上传人:xinsheng2008 2019/5/16 文件大小:95 KB

下载得到文件列表

1.实验目的(1)掌握video4linux常用api函数的使用方法。.ppt

文档介绍

文档介绍:(1)掌握video4linux常用API函数的使用方法。(2)掌握FrameBuffer驱动程常用API函数的使用方法。(3)了解视频应用与开发的过程。USB摄像头实验硬件: PC机 1台 MagicARM2410教学实验开发平台 1台USB摄像头(OV511芯片组) 1个软件: (可选) (OV511摄像头)中读取图像数据,然后将这些数据写入FrameBuffer,使摄像头采集到的图像在液晶屏中显示出来。(1)熟悉嵌入式Linux应用程序的编写及其编译调试的方法。(2)熟悉nfs文件系统的使用。(3)复****FrameBuffer模块应用实验和video4linux模块应用实验。:首先打开视频设备,视频采集设备在系统中对应的设备文件为/dev/video0,采用系统调用函数fd=open("/dev/video0",O_RDWR),fd是设备打开后返回的文件描述符(打开错误返回-1),以后的系统调用函数就可使用它来对设备文件进行操作了。接着,利用ioct1(fd,VIDIOCGCAP,&grab_cap)函数读取struct video_capability中有关图像捕捉设备的信息。该函数成功返回后,这些信息从内核空间拷贝到用户程序空间grab_cap各成员分量中,使用printf函数就可得到各成员分量信息,例如printf("maxheight=%d",)获得最大垂直分辨率的大小。(fd,VIDIOCGPICT,&grab_pic)函数读取视频采集设备缓冲voideo_picture信息。在用户空间程序中可以改变这些信息,具体方法为先给变量赋新值,再调用VIDIOCSPICT ioct1函数,:=3;if(ioct1(fd,VIDIOCSPICT,&grab_pic)<0){ perror("VIDIOCSPICT");return -1;},就可以对视频图像截取了,有两种方法:一种是read()直接读取;另外一种mmap()内存映射。Read()通过内核缓冲区来读取数据;而mmap()通过把设备文件映射到内存中,绕过了内核缓冲区,最快的磁盘访问往往还是慢于最慢的内存访问,所以mmap()方式加速了I/O访问。另外,mmap()系统调用使得进程之间通过映射同一文件实现共享内存,各进程可以像访问普通内存一样对文件进行访问,访问时只需要使用指针而不用调用文件操作函数。因为mmap()的以上优点,所以在程序实现中采用了内存映射方式,即mmap()方式。()方式视频裁取具体进行操作如下:①先使用ioct1(fd,VIDIOCGMBUF,&grab_vm)函数获得摄像头存储缓冲区的帧信息,之后修改voideo_mmap中的设置,例如重新设置图像帧的垂直及水平分辨率、彩色显示格式。可利用如下语句:=240;=320;=VIDEO_PALETTE_RGB24;②接着把摄像头对应的设备文件映射到内存区,具体使用grab_data=(unsigned char*)mmap(0,,PROT_READ|PROT_WRITE,MAP_SHARED,grad_fd,0)操作。这样设备文件的内容就映射到内存区,该映射内容区可读可写并且不同进程间可共享。该函数成功时返回映像内存区的指针,出错时返回值为-1。:单帧采集在上面获取的摄像头存储缓冲区帧信息中,最多可支持的帧数(frames的值)一般为两帧。=0,即采集其中的第一帧,使用ioctl(fd,VIDIOCMCAPTURE,&grab_buf)函数,若调用成功,则激活设备真正开始一帧图像的截取,是非阻塞的。接着使用ioct1(fd,VIDIOCSYNC,&frame)函数判断该帧图像是否截取完毕,成功返回表示截取完毕,之后就可把图像数据写入到FrameBuffer。,。在循环语句中,APTURE ioct1和VIDIOCSYNC ioctl函数完成每帧截取,但