首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > 基于VideoForLinux的USB摄像头视频采集和基于Qt/Embedded的实时图像显示

基于VideoForLinux的USB摄像头视频采集和基于Qt/Embedded的实时图像显示

资料介绍

FS2410开发板上,Linux是2.6的内核,Qt/Embedded是2.3.7版本的,USB摄像头主控芯片是中星微301P。摄像头驱动是spca5xxx,使用Video For Linux采集到jpeg图片,然后使用Qt/Embedded进行显示。

全部程序包含两个部分视频采集和图片显示。

只包含视频采集部分的程序:

其实很多Linux下的抓图程序和这个很类似。

Linux下的USB摄像头图像采集要完成两个部分:摄像头驱动程序和图像采集应用程序。


1 加载USB摄像头驱动程序

Linux下自带有ov511控制芯片的USB摄像头驱动,但是我们使用的是中星微的摄像头,所以无法直接使用。目前Linux下的开源USB摄像头驱动spca5xx支持中星微的摄像头。在网上下载好源码,交叉编译成内核模块后使用insmod命令加载到系统中去。把摄像头连接到开发板上,发现可以识别到摄像头,下面我们就可以进行摄像头图像采集编程了。


2 Linux下的视频采集编程接口简介

Linux对于视频采集设备的支持,是通过Video For Linux实现的,通常可以简称为V4L,现在较高版本的Linux内核都已经包含了Video For Linux。Video For Linux是为各种电视卡,以及并口和USB接口的音视频采集设备提供统一的编程接口,在Linux 下,视频采集设备的正常使用依赖于对Video For Linux标准的支持。

3 基于Video For Linux的图片捕捉

基于Video For Linux的图片捕捉流程如图所示,主要包括三个部分:初始化,同步,读取数据。


图片捕捉流程见上图,主要包括3个步骤:

1)初始化:首先是使用open函数打开视频设备文件,而且是独占的可读模式。然后使用Video For Linux接口函数设置视频设备的数据通道,设置视频数据传输的模式,可选的有NSTC或者PAL等。为了方便读取图像数据,使用mmap函数建立内存映射,在应用程序中直接读取图像数据。最后就是设置要捕捉的图片大小,即分辨率,我使用的摄像头最大可以提供分辨率800*600,每秒25张图片。

2)同步:等待一帧视频数据采集完毕后才能读取数据,否则将出现错误,同时还可以对帧号进行操作。

3)读取数据:我们使用的中星微摄像头传输过来的图片已经是JPEG编码格式。

下图就是使用Video For Linux采集的320*240的jpeg格式图片。

标签:嵌入式ARM
基于VideoForLinux的USB摄像头视频采集和基于Qt/Embedded的实时图像显示
本地下载

评论