基于Video For Linux的USB摄像头视频采集和基于Qt/Embedded的实时图像显示
这是我再FS2410开发板上,Linux是2.6的内核,Qt/Embedded是2.3.7版本的,USB摄像头主控芯片是中星微301P。摄像头驱动是spca5xxx,使用Video For Linux采集到jpeg图片,然后使用Qt/Embedded进行显示。图片如下:http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465770.JPG
(原文件名:DSC03413.JPG)
其中左上角的那个显示的是采集到的图像。
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465771.JPG
(原文件名:DSC03405.JPG)
全部程序包含两个部分视频采集和图片显示。
点击此处下载 ourdev_465773.rar(文件大小:85K) (原文件名:moniter8.rar)
只包含视频采集部分的程序:
点击此处下载 ourdev_465774.rar(文件大小:13K) (原文件名:capture7.rar)
其实很多Linux下的抓图程序和这个很类似。
一些相关的参考资料:
点击此处下载 ourdev_465775.pdf(文件大小:219K) (原文件名:linux嵌入式视频论文.pdf)
点击此处下载 ourdev_465776.pdf(文件大小:175K) (原文件名:Linux下基于ARM920T的USB摄像头图像采集.pdf)
点击此处下载 ourdev_465777.pdf(文件大小:175K) (原文件名:Linux下基于ARM920T的USB摄像头图像采集.pdf)
点击此处下载 ourdev_465778.pdf(文件大小:77K) (原文件名:Video4Linux Programming_linux-2.4.pdf)
点击此处下载 ourdev_465779.pdf(文件大小:159K) (原文件名:基于Video4Linux 的USB 摄像头图像采集实现.pdf)
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的图片捕捉流程如图所示,主要包括三个部分:初始化,同步,读取数据。
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465784.jpg
(原文件名:video.jpg)
图片捕捉流程见上图,主要包括3个步骤:
1)初始化:首先是使用open函数打开视频设备文件,而且是独占的可读模式。然后使用Video For Linux接口函数设置视频设备的数据通道,设置视频数据传输的模式,可选的有NSTC或者PAL等。为了方便读取图像数据,使用mmap函数建立内存映射,在应用程序中直接读取图像数据。最后就是设置要捕捉的图片大小,即分辨率,我使用的摄像头最大可以提供分辨率800*600,每秒25张图片。
2)同步:等待一帧视频数据采集完毕后才能读取数据,否则将出现错误,同时还可以对帧号进行操作。
3)读取数据:我们使用的中星微摄像头传输过来的图片已经是JPEG编码格式。
下图就是使用Video For Linux采集的320*240的jpeg格式图片。
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_465786.jpg
(原文件名:sample1.jpg) 好资料,谢谢!顶一下! 高手,支持啊,真希望能到达LZ的水平。 MARK thank you very much 好羡慕楼主啊,小弟就想搞监控,可是入门就入了1个月还没进去,郁闷啊!! 最近也打算学习下视频采集,楼主的摄像头每秒钟可以达到多少帧啊,USB2.0全速接口,貌似不是很快。 我使用的是10帧每秒,这个板子是usb1.0标准的,不会太快。 我使用的是10帧每秒,这个板子是usb1.0标准的,不会太快。 我想在Debian服务中添加奥尼ANC的一款摄像头,也想通过自己编译spca5xxx来驱动,目前尚未成功,没头绪,暂放一边。 mark 学习 下载了,正在研究
谢谢了,把这么好的东西拿出来分享
曾经看到过一句话,网络上的大侠才是中国未来真正的希望,向你学习,共同促进开源的发展 一哈学习! 这个得顶 这么吊! 我把楼主的例子移植到我的板子mini2440,可以正常运行,但是提示can not get channels,我把它屏蔽掉,接下来那个get_mbuf又出错了,弄了好几天都没解决,希望楼主能帮忙一下,谢谢了,我的QQ502116852,邮箱08zthuang@stu.edu.cn 马克。 很好很强大 赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞 哈哈支持 楼主,我qq号:674493629,可以跟你交流一下吗?谢谢了! MARK 这个应该支持一下` 呵呵 顶,多谢 mark mark 楼主牛人啊!!资料收下了,谢谢! 学习了。 我在读研究生的时候做过一个一模一样的东西,哈哈哈。 mark mark并膜拜一下。 MARK mark kankan 赞一个! mark mark 不知谁挖出来的
我也mark下 楼主nb 我是新手。问一下万能驱动能否识别中星微ZC0301PLH芯片(例如摄像头ANC S866)。 楼主也不放出个qt 的教程,,不会qt诶 楼主你好,最近在学习这个。qq号272996295希望够得到你的指教。谢谢 呵呵 mark!~~ 真不错,我也在学习希望和你交流,qq:554262404 mark makr 谢谢 可以用来参考一下 mark Video For Linux mark mark mark mark mark 不错,学习了! mark mark,好东西哈哈 系统编译 picview.cpp总是提示错误:class Qpainter没有名为“scale”成员。请问一下能帮忙解答吗? 请问各位大侠,我想实现视频保存回放的功能,系统需要什么配置? 必mark MARK 下载了,正在研究 mark! 崇拜啊~~~果断收藏 楼主有没有试着用V4L2做!听说变化挺大的!期待回复! MARK mark mark~ mark mark mark 很不错的东西。 mark cool! mark Lz你好,我把你的capture7移植到TQ2440板子上,出现了如下的错误
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_643898CPENVW.PNG
(原文件名:捕获.PNG)
我使用板子自带的2.6.30.4的内核,在网上查了一下,内核加上了如下配置
Device Drivers--->
Multimedia devices--->
*** Multimedia core support ***
<*> Video For Linux
[*] Enable Video For Linux API 1 (DEPRECATED)
但是下载的内核已经加上了上面的配置 ,不知道怎么回事??是内核的关系还是摄像头的关系?
QT界面的程序我是在QT4.5环境下编译的,也出现了错误:
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_643899CUEL8S.PNG
(原文件名:1.PNG)
这是QT的版本关系么??
xiexie 我又换了下Qt的环境2.2.0,这回重新编译了一下,出现了59楼朋友的错误,把这句屏蔽掉了,这回编译通过了...在PC机
上仿真的图:
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_643947EEU74P.PNG
(原文件名:捕获1.PNG)
也不知道屏蔽掉的那句有没有影响???
期间还出现了一个错误:cannot open framebuff /dev/fd0...
在运行程序之前执行了qvfb -width 320 -hight 240 &就可以显示了!!
但是capture7那个程序还是没有在板子上运行,天嵌2.6.13的内核不支持256M的flash,不知道怎么办?? mark!lz V5 又换了两个摄像头(这两个都是同学近两年买的),,出现了16楼朋友的错误,
之前的摄像头是同学N年前买的!!执行采集程序时,摄像头上的灯也亮了,但是就是出现了如上的错误!
难道不是内核的原因??是摄像头的关系
LZ 有时间看看啊谢谢 好东东,先下了看看。十分感谢 终于成功了!!! http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_644009E6QGIT.PNG
(原文件名:捕获4.PNG) 恭喜LZ!! mark,lz 强大 好贴!!正需要。 mark mark 回复【7楼】superyongzhe 最后的骑士
-----------------------------------------------------------------------
楼主,请问一下,你有没有带有qtopia的根文件系统qtopia.cramf?优龙手册上写着里面带这个根文件系统,但我的里面没有带这个东西! 这个很好。MARK! 回复【楼主位】superyongzhe 最后的骑士
-----------------------------------------------------------------------
不好意思,我刚都忘了发我的邮箱了:wangchao7620@126.com,真的太需要这个了,麻烦楼主了! 学习。 收藏了 回复【78楼】1988 coolboy
我又换了下qt的环境2.2.0,这回重新编译了一下,出现了59楼朋友的错误,把这句屏蔽掉了,这回编译通过了...在pc机
上仿真的图:
(原文件名:捕获1.png)
引用图片
也不知道屏蔽掉的那句有没有影响???
期间还出现了一个错误:cannot open framebuff /dev/fd0...
在运行程序之前执行了qvfb -width 320 -hight 240 &就可以显示了!!
但是capture7那个程......
-----------------------------------------------------------------------
coolboy,有个问题想请教您,是关于《基于Video For Linux的USB摄像头视频采集和基于Qt/Embedded的实时图像显示》,我也是用的qt4,现在遇到了很多问题,由于不是很懂qt,所以比较头痛,是否可以帮忙解答一下?多谢。
我这里出现的类似您帖子中讲得错误,不知应如何解?
您都修改了哪些地方?可否简单罗列?
或者指个方向。
若能不吝赐教源码,不胜感激。
我的QQ:414697928,email:jinglei.auto@gmail.com
希望与您深入交流与探讨。 回复【59楼】liuxiaoyang
系统编译 picview.cpp总是提示错误:class qpainter没有名为“scale”成员。请问一下能帮忙解答吗?
-----------------------------------------------------------------------
我这里遇到了很多问题,我目前qt版本为4.7,linux内核为2.6.32.开发板为mini2440.
请问您把这个问题解了吗?
可否与您深入探讨?
qq:414697928 email:jinglei.auto@gmail.com
希望不吝赐教。 回复【楼主位】superyongzhe 最后的骑士
这是我再fs2410开发板上,linux是2.6的内核,qt/embedded是2.3.7版本的,usb摄像头主控芯片是中星微301p。摄像头驱动是spca5xxx,使用video for linux采集到jpeg图片,然后使用qt/embedded进行显示。图片如下:
(原文件名:dsc03413.jpg)
引用图片
其中左上角的那个显示的是采集到的图像。
<center>
<font color=green>(原......
-----------------------------------------------------------------------
楼主,太强大了。
我正需要相关的资料,不过我编译您的source code的时候,出现了很多问题;有人说是qt2和qt4版本差异(我使用的是qt4.7),若是如此,我应如何修改?
小弟还未入门,不懂qt,望您不吝赐教。
另外,小弟还想与您深入探讨,QQ 414697928 email:jinglei.auto@gmail.com mark 楼主强大 mark!! qiangda!! 太好了 up!
页:
[1]
2