- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux视频驱动接口V4L2视频采集编程
Linux系统中,视频设备被当作一个设备文件来看待,设备文件存放在 /dev目录下,完整路径的设备文件名为: /dev/video0 . 视频采集基本步骤流程如下: 打开视频设备,设置视频设备属性及采集方式、视频数据处理,关闭视频设备,如下图所示: 一、打开视频设备 打开视频设备非常简单,在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备: 1. 用非阻塞模式打开摄像头设备int cameraFd;cameraFd = open(/dev/video0, O_RDWR | O_NONBLOCK); 2. 如果用阻塞模式打开摄像头设备,上述代码变为:cameraFd = open(/dev/video0, O_RDWR); 关于阻塞模式和非阻塞模式 应用程序能够使用阻塞模式或非阻塞模式打开视频设备,如果使用非阻塞模式调用视频设备,即使尚未捕获到信息,驱动依旧会把缓存(DQBUFF)里的东西返回给应用程序。 二、Linux视频设备驱动常用控制命令使用说明 设置视频设备属性通过ioctl来进行设置,ioctl有三个参数,分别是fd, cmd,和parameter,表示设备描述符,控制命令和控制命令参数。 Linux 视频设备驱动接口V4L2支持的常用控制命令如下: 1. 控制命令 VIDIOC_ENUM_FMT 功能: 获取当前视频设备支持的视频格式 。 参数说明:参数类型为V4L2的视频格式描述符类型 struct v4l2_fmtdesc 返回值说明: 执行成功时,函数返回值为 0;struct v4l2_fmtdesc 结构体中的 .pixelformat和 .description 成员返回当前视频设备所支持的视频格式; 使用举例: ------------------------------------------------------------------------------------------------- struct v4l2_fmtdesc fmt; memset(fmt, 0, sizeof(fmt)); fmt.index = 0; fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; while ((ret = ioctl(dev, VIDIOC_ENUM_FMT, fmt)) == 0) { fmt.index++; printf({ pixelformat = %c%c%c%c, description = %s }\n, fmt.pixelformat 0xFF, (fmt.pixelformat 8) 0xFF, (fmt.pixelformat 16) 0xFF, (fmt.pixelformat 24) 0xFF, fmt.description); } --------------------------------------------------------------------------------------------------------------- 2. 控制命令VIDIOC_QUERYCAP 功能: 查询视频设备的功能 ; 参数说明:参数类型为V4L2的能力描述类型struct v4l2_capability ; 返回值说明: 执行成功时,函数返回值为 0;函数执行成功后,struct v4l2_capability 结构体变量中的返回当前视频设备所支持的功能;例如支持视频捕获功能V4L2_CAP_VIDEO_CAPTURE、V4L2_CAP_STREAMING等。 使用举例: ----------------------------------------------------------------------------------------------------------- struct v4l2_capability cap; iret = ioctl(fd_usbcam, VIDIOC_QUERYCAP, cap); if(iret 0) { printf(get vidieo capability error,error code: %d \n, errno);
文档评论(0)