基于Video4Linux 的USB摄像头图像采集实现

本文介绍了如何在Linux系统中,特别是华恒HHARM-2410-EDU开发板上,使用Video4Linux接口实现USB摄像头(如ov511和zc301)的图像采集。详细讲解了驱动加载的静态和动态方法,以及遇到的问题和解决办法。此外,还探讨了Video4Linux编程,包括视频设备的打开、信息获取、编程流程和关键步骤。最后,提供了LCD实时显示图像的实例,涉及驱动修改和minigui库的交叉编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
J.W.Hu 基于Video4Linux 的USB摄像头图像采集实现
Linux本身自带了采用ov511芯片的摄像头,而市场上应用最广泛的是采用中
芯微公司生产的zc301芯片的摄像头,下面我将针对这两大系列的摄像头分别做
介绍。

       (注:所有的开发都是在华恒HHARM-2410-EDU上完成,ov511摄像头采
用的是网眼webeye3000,zc301摄像头采用的是ANC奥尼S888)。

       一 驱动加载

      1.1 ov511 驱动

      1.静态加载

     (1)在arm linux的kernel目录下make menuconfig。
     (2)首先(*)选择Multimedia device->下的Video for linux。加载video4linux模块,
为视频采集设备提供了编程接口;
     (3)然后在usb support->目录下(*)选择support for usb和usb camera ov511
support。这使得在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动
支持。
     (4)保存配置退出。
     (5)make dep;make zImage
此时在/tftpboot 下就生成了带有ov511 驱动的内核。

      2.动态加载
    (1)在arm linux的kernel目录下make menuconfig。
    (2)首先<*>选择Multimedia device->下的Video for linux。
    (3)然后在usb support->目录下<*>选择support for usb和<M>选择usb camera
ov511 support。
     (4)保存退出。
     (5)Make dep;make zImage;make modules然后就在/driver/usb下生成ov511.o,同
时生成的zImage自动放在/tftpboot下。
     (6)然后用新内核启动板子后insmod ov511.o就可以成功加载。

       动态方式与静态方式相比,测试时要简单的多。不需要下载整个内核,只需通过nfs,加载驱动即可测试。在测试成功后就可以编译进内核。
模块加载中出现的问题:

       1.insmod 和modprobe 间的一个区别试后者不会在当前目录中查找模块,它只在/lib/modules 下的缺省目录下查找,这是因为该程序只是一个系统实用例程,不是一个交互工具。可以通过在/etc/modules.conf 中指定自己的目录,来把它们加到缺省目录集中。
       2.如果插入模块ov511.o 时,出现以下信息:
Ov511.o:unresolved symbol video********之类的,说明还有其它模块videodev.o
没有加。
       3.出现错误:ov511.o:couldn’t find the kernel version this modules was compiled
for。这是试图插入一个不是可装入模块的目标文件。因为在内核配置阶段,是
把ov511 模块静态加到内核中的,虽然看起来和可装入模块的文件名ov511.o 完
全一样,但是不能用insmod 命令加入。
       4.如果出现Ov511.o:unresolved symbol video********,那就<M>选中video for
linux,用新生成的内核启动系统,再insmod videodev.o,insmod ov511.o 就可以啦。

       1.2 zc301 驱动

       摄像头的驱动是从http://mxhaard.free.fr/下的针对embeded环境,有专门的patch,我用的是usb-2.4.31LE06.patch。

       (1)把它放到/HHARM9-EDU/kernel/driver/usb下,解压,打补丁。就会在此目录下看到spca5xx文件夹了。可能会有一些错误,我的错误是在Makefile和config.in文件中,根据它的提示,进行相应的修改即可。Patch时会将修改方法写到 Makefile.rej和config.in.rej文件中,把这两个文件里的内容加到Makefile和config.in
中就行了。
       (2)编译内核,进入/HHARM9-EDU/kernel,make menuconfig。我采用和上面介绍的ov511驱动的方法一样,动态加载。(M)选中SPCA5XX这一项           ( 3 ) make dep ; make zImage ; make modules 。就会在
/HHARM9-EDU/kernel/driver/usb/spca5xx 中生成
spca5xx.o,spcadecoder.o,spca_core.o啦。这就是我们要的驱动。
       (4)用新内核启动,insmod这三个.o文件(可以不用加载spcadecoder.o),摄像头就加载成功啦。
      

       不过这种LE的驱动有许多问题,比如运行到设置图像格式(RGB565或RGB24)时出错, 说不支持此参数。原因在于: ( 摘自驱动程序主页
http://mxhaard.free.fr/spca5le.html)
       The spca5xx-LE design is very different from the spca5xx full package(LE版的驱动
和完全版的差很多)。
       The memory in use are the most smaller as possible(LE版的驱动会尽量减少内存的
使用)
       The spcadecoder is reduce and only raw jpeg webcam are used.(驱动模块只支持输
出原始jpeg格式)。
        还有一种方法, 从http://mxhaard.free.fr/download.html 下载最新的驱动
sp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值