使用v4l2音、视频协议实现USB摄像头的图像、视频YUV格式采集功能(ubuntu16.04LTS)

第一感觉是首先得了解v4l2协议,它的功能、以及与之对应的实现逻辑,还有与硬件、操作系统的交互等内容。再试着根据功能逻辑和软硬件交互关系,借助硬件设备,实现基础的功能,如查询设备信息、帧类型等。然后,一步一步按照逻辑功能实现步骤,完成代码的编写。

一开始并不了解YUV格式文件,在代码中也仅仅是把硬件设备中采集的单帧数据写入到 file.yuv 文件中,并试着使用pYUV软件打开该文件,结果肯定打开失败。此处,考虑的问题是可能是打开的方式不对(格式选择、帧率等),或者是文件数据类型不对(并不是YUV格式),最后才发现,就是文件数据类型不对,原因是USB协议不支持也就是下面要求下载virtualbox扩展增强包的原因。而且,打开的方式也不对,要求VGA-YUV422-interleaved(后面补充)。

后面就可以实现USB摄像头采集YUV格式视频,保存并播放。下面将详细介绍整个流程。

一、软件环境搭建

1、系统环境

操作系统:ubuntu16.04LTS

编辑器:Vim 7.3.429

编译器:gcc 4.6.3

2、下载virtualbox扩展增强包(与USB摄像头有关)

说明:首先,要确认你的USB摄像头使用的什么版的USB协议,1.1或2.0或3.0;virtualbox16.04LTS仅支持USB1.1,所以如果你的USB摄像头是USB2.0或USB3.0就需要安装扩展增强包;当然,如果你的virtualbox一开始就支持USB2.0或USB3.0,也就无需执行这一步骤。

virtualbox管理器->设置->USB设备->USB控制器(确认是否支持USB2.0/3.0)

下载方式(https://jingyan.baidu.com/article/22a299b5e0198a9e19376a38.html

3、驱动一般会自动安装,如果驱动未安装,也无法实现功能

二、硬件环境确认(确认步骤)

说明:这一步意在确认USB硬件是否正常,先在主机上确认(排除硬件设备出现的问题),再在ubuntu系统上使用相关软件确认(排除ubuntu上驱动的问题),若两步都能够成功显示图像,则表明在硬件、驱动、接口等方面都没有问题,最后才进行软件编程。

此处,考虑的较为繁杂,一般的设备都不会出现问题,最可能遇见的问题就是上面说的USB协议不一致的问题。所以,如果软件方面确认无误,此步可跳过。

1、所用到软件

主机(Windows):MiniVCap(USB检测)、pYUV(YUV格式文件打开)

虚拟机(ubuntu):cheese/mplayer/camorama(USB检测)

2、确认USB摄像头在主机上可用

插入摄像头USB接口,打开MiniCap,若图像显示成功,则确认无误。

3、确认USB摄像头在ubuntu系统可用

安装相关的软件(任选其一)

sudo apt-get install cheese;
sudo apt-get install mplayer;
sudo apt-get install camorama;

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值