Camera驱动和编程..docVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Camera驱动和编程.

Camera 驱动和编程 了解了framebuffer,摄像头便只是fb的数据来源而已。 先了解些相关的概念: V4L2(video 4 linux 2)   可以支持多种设备,它可以有以下几种接口:   1.?视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2的最初设计就是应用于这种功能的.   2. 视频输出接口(video output interface):可以驱动计算机的外围视频图像设备--像可以输出电视信号格式的设备.   3. 直接传输视频接口(video overlay interface):它的主要工作是把从视频采集设备采集过来的信号直接输出到输出设备之上,而不用经过系统的CPU.   4. 视频间隔消隐信号接口(VBI interface):它可以使应用可以访问传输消隐期的视频信号.   5. 收音机接口(radio interface):可用来处理从AM或FM高频头设备接收来的音频流. ? Video4linux下视频编程的流程: (1)打开视频设备: (2)读取设备信息 (3)更改设备当前设置(没必要的话可以不做) (4)进行视频采集,两种方法: a.内存映射 b.直接从设备读取 (5)对采集的视频进行处理 (6)关闭视频设备。 /* 这样的流程地球人都晓得 */ ? ? 关键步骤介绍 : (1)打开视频: Open(”/dev/video0”,vdàfd); 关闭视频设备用close(”/dev/video0”,vdàfd); (2)读video_capability中信息 ioctl(vd-fd, VIDIOCGCAP, (vd-capability)) 成功后可读取vd-capability各分量 eg. (3)读video_picture中信息 ioctl(vd-fd, VIDIOCGPICT, (vd-picture)); (4)改变video_picture中分量的值 (可以不做的) 先为分量赋新值,再调用VIDIOCSPICT Eg. vd-picture.colour = 65535; if(ioctl(vd-fd, VIDIOCSPICT, (vd-picture)) 0) { perror(VIDIOCSPICT); return -1; } (5)初始化channel (可以不做的) 必须先做得到vd-capability中的信息 for (i = 0; i vd-capability.channels; i++) { vd-channel[i].channel = i; if (ioctl(vd-fd, VIDIOCGCHAN, (vd-channel[i])) 0) { perror(v4l_get_channel:); return -1; } } /* 通过ioctl,将struct v4l_struct作为参数的设备操作而已,那么重点将是整个结构体:struct v4l_struct*/ ? typedef?struct v4l_struct { int fd; struct video_capability capability; struct video_channel channel[4]; struct video_picture picture; struct video_window window; struct video_capture capture; struct video_buffer buffer; struct video_mmap mmap; struct video_mbuf mbuf; unsigned char *map; int frame; int framestat[2]; }vd; ? /* 那么,对该结构体的了解便成了关键*/ Video4linux支持的数据结构及其用途 (1)video_capability?包含设备的基本信息(设备名称、支持的最大最小分辨率、信号源信息等),包含的分量: name[32]?//设备名称 maxwidth , maxheight, minwidth, minheight Channels?//信号源个数 type?//是否能capture,彩色还是黑白,是否能裁剪等等。值如VID_TYPE_CAPTURE等 (2)video_picture设备采集的图象的各种属性 brightness 0~65535 hue colour contrast whiteness depth?// 24 palette?// VIDEO_PALETTE_RGB24 (3)video_channel?关于各个信号源的属性 Channel?//信号源

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档