Linux下基于Video4Linux的USB摄像头视频采集实现
Linux下基于Video4Linux的USB摄像头视频采集实现
\
兰兰竺竺
Linux下基于
黄睿邦
Vide04Linux
的USB摄像头视频采集实现
,
汤荣江
,
李文亮
(广东工业大学计算机学院,广州510006)
摘要:介绍在IJnux系统下通过USB摄像头实现视频采集的一种方法。利用Vide04Linux提
供的数据结构、编程接口,结合USB摄像头驱动,实现了Linux环境下USB摄像头的视频采集、连续播放的功能。
关键词:Vide04Linux;摄像头;USB;视频采集
1
Vide04Linux简介
Vide041.inuxr简V4L)是Hnux中关于视频设备的
的操作上。这个编程接口是这样,驱动可以与内核的其他部分分开建立。并在需要的时候在运行时“插
内核驱动.它为针对视频设备的应用程序编程提供一系列接口函数.这些视频设备包括现今市场上流行TV卡、视频捕捉卡和USB摄像头等。
对于USB口摄像头.其驱动程序中需要提供基本的I/0操作接口函数open、read、write、close的实现。对中断的处理实现.内存映射功能以及对I/O通道的控制接口函数ioctl的实现等.并把它们定义在
struct
入”。
视频设备也是一种设备文件.所以可以像访问普通文件一样对其进行读写。摄像头设备地址是/dev/
videoO。
在系统平台上对USB口摄像头进行驱动.首先把USB控制器驱动模块静态编译进内核.使平台中支持USB接口,再在需要使用摄像头采集时.使用insmode动态加载其驱动模块.这样摄像头就可正常工作了。
在Hnux下.ov511芯片是直接支持Linux.这种芯片的摄像头有网眼V2000。笔者使用的是Z—StarZC0301芯片的摄像头。需要spca5xx的驱动,这是一个通用驱动。笔者下载的是gspcavl.比spca5xx更高一点的版本。
用户可以在命令行输入:lsusb:查看所有USB接口的设备参数.接上USB摄像头后.这里就会显示相关信息.摄像头设备的参数信息最后字母为Web.Cam,参数包括生产商、芯片型号及产品型号。安装驱动模块具体步骤如下:
(1)下载gspcavl一20070110.tar.gz包,解压。在终端里进入该文件夹运行:make;得到gspca.ko驱动模块。
(2)可以通过文件自带的程序,用:make加载驱动模块:或通过命令:modprobe
install;
file
operations中。这样当应用程序对设备文件
进行诸如open、close、read、write等系统调用操作时,Linux内核将通过file.
提供的函数。例如,当应用程序对设备文件执行读操作时.内核将调用fileoperations结构中的read函数。
1
加载USB摄像头驱动模块
在Linux下.所有的外设均被看成是一种特殊文
件进行处理.称之为设备文件。系统调用及各种函数库直接或间接地提供了内核和应用程序之间的接口。
现
代
计
而设备驱动程序则是内核和外设之间的接口。
驱动程序在LinUX内核里扮演着特殊的角色.它们是截然不同的“黑盒子”.使硬件的特殊的一部分响应定义好的内部编程接E1。它们完全隐藏了设备工作的细节。用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的:设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关
收稿日期:2009—04—07
算
机
^
总
第
三0
gspca;加载驱
九期
v
修稿日期:2009-06-11
作者简介:黄睿邦(1984一),男,广东东莞人,在读研究生,研究方向为网络监控与决策
MODERNCOMPUTER
2009.6
182
万方数据
Linux下基于Video4Linux的USB摄像头视频采集实现
兰兰竺!//
动模块。
加载模块的命令有insmod与modprobe.其差别于modprobe能够处理module载人的相依问题。比方要载人amodule.但是amodule要求系统先载人bmodule时.直接用insmod挂入通常都会出现错误信息.而modprobe能够知道先载人bmodule后才载人
a
module.如此相依性就会满足。所以推荐大家使用
modprobe命令。
加载模块完毕后。输入:lsmodl
grep
gdpca;就可
以看到有gspca模块。再输入:ls/dev/vide00;就可以检测到设备。这样就成功加载了驱动模块。2
程序模块设计
视频图像采集流程图如图1:
图1视频图像采集流程
在“nux系统下视频设备的图像数据采集是基于Vide04Linux应用编程接El的.通过使用接口提供的有个数据结构定义和函数库.对摄像头进行图像采集。
这里先定义一个描述设备的数据结构.它包含了v4l中定义的所有数据结构.在本文后续部分用到的变量也以此为依据。
struct——v41.—struct
{intfd;
8truct
video_capabilitycapability;
stmctvideo_channelchannel[8];
structvideo_pic{qrepicture;
structvideo_mmapmmap;struct
video_mbufmbuf;
unsignedchar+map;
unsignedchar+buffer;,
int
frame_current;
万方数据
int{rame—using[2];};
typedefstruet——v41——structv41_device;
v41_devicevd;
这些数据结构的用途如下:
●video.capability包含摄像头的基本信息,例如设备名称、支持的最大最小分辨率、信号源信息:
●videoDicture包含设备采集图象的各种属性:
亮度、色调、对比度、色度、深度、调色版;
●video
channel包含信号通道的各种属性.例如
信号源的编、名字、类型等;
●videommap用于内存映射;
●videombuf利用mmap进行映射的帧信息.包
括帧大小、最多支持帧数、每帧相对基址的偏移;
●Map是mmap方式获取数据时.数据的首地址:
●Buffer是图像数据存放区.即帧地址:
●framecurrent是保存当前使用的是那一帧:●frame
usingm是保存这一帧的状态:0表示可
期用.1表示不可用。
ioctl函数大部分驱动除了读写设备的能力.还需要通过设备驱动进行各种硬件控制的能力。大部分设备可进行超出简单的数据传输之外的操作。而ioctl函数就是设备驱动程序 …… 此处隐藏:5097字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教学研究]2012西拉科学校团少队工作总结
- [教学研究]建筑工程公司档案管理制度
- [教学研究]小学数学人教版六年级上册圆的周长和面
- [教学研究]ERP电子行业解决方案
- [教学研究]钢支撑租赁合同范本
- [教学研究]预应力自动张拉系统用户手册Rev1.0
- [教学研究]MOOC课程:金瓶梅人物写真(每章节课后
- [教学研究]追加被执行人申请书(适用追加夫妻关系)
- [教学研究]2014年驾考科目一考试最新题库766
- [教学研究]2013-2014学年度九年级物理第15章《电
- [教学研究]新版中日交流标准日本语初级下26课-客
- [教学研究]小导管注浆施工作业指导书
- [教学研究]一般财务人员能力及人岗匹配评估表
- [教学研究]打1.2.页 小学一年级暑假口算100以内加
- [教学研究]学习贯彻《中国共产党党和国家机关基层
- [教学研究]2012年呼和浩特市中考试卷_35412
- [教学研究]最简易的电线电缆购销合同范本
- [教学研究]如何开展安全标准化建设
- [教学研究]工作分析与人岗匹配
- [教学研究]2016-2017学年高中历史第七单元现代中
- 山东省义务教育必修地方课程小学三年级
- 台湾宜兰大学互联网交换技术课程 01_In
- 思想品德:第一课《我知我家》课件(人
- SAR合成孔径雷达图像点目标仿真报告(附
- 利辛县“十三五”规划研究报告
- 2015-2020年中国手机APP行业市场发展趋
- 广告策略、创意表现、媒体方案
- 企业如何申请专利的的几点思考
- 《中国教育简史》网上作业
- 高中历史第二单元西方人文精神的起源及
- 年终晚会必备_精彩的主持稿_精心整理_
- 信息工程专业自荐书
- 2019高考历史人教版一轮练习:第十二单
- JAVA俱乐部管理系统软件需求规格说明书
- 2016-2021年中国小型板料折弯机行业市
- (人教新课标)六上_比的基本性质课件PPT
- 辽宁省公务员考试网申论备考技巧:名言
- 神经阻滞麻醉知情同意书
- 施工企业信息填报、审核和发布的相关事
- 初一(七年级)英语完形填空100篇




