操作环境:
硬件平台:tiny6410 内核版本:2.6.38 摄像头:罗技的c210 usb摄像头
遇到的问题是:
1)用linux下的v4l2API采集出来的图像分辨率为176*144,而用户手册上给出的最大分辨率可以为640*480。
2)因为现在的video capture 设备可能带有多个功能,例如c210除了有video capture功能外,还有内置的麦克风,我的理解就是v4l2所说的audio(语音)。v4l2中有关于语音的输入通道的查询、选择等。但是我找了半天没找到怎么对语音数据采集的接口。很是郁闷。(此问题没有在此文章讨论,有待解决)
初步猜测有时以下原因:
1.tiny6410的usb host接口为usb1.1版本的,而罗技的c210接口为usb2.0,且在linux下这款摄像头用的为uvc驱动,而Uvc官网有解释说当摄像头连接到Usb1.1版本的时候可能会出问题,最好接到usb2.0接口上。
2.就是v4l2API调用不对,这种可能性基本排除掉了。首先v4l2官网有示范的capture video 例子,将自己的程序与之相对,基本一致。第二,我将相同的采集程序放到我pc上在虚拟机中运行的ubuntu10.10,pc的usb版本为usb2.0,摄像头还是c210,但是采集出来的图像分辨率就是程序所要求的640*480。ubuntu的内核版本为2.6.35。所以初步断定为就是摄像头硬件和开发板的usb接口问题造成。
以下有些内容是对此博客的引用:http://blog.csdn.net/yaozhenguo2006/article/details/7074706
在嵌入式系统中,视频采集主要采用两种接口:一种是标准摄像头接口,一种是USB接口(USB1.1)。标准的摄像头接口,接口复杂,但传输速度快,适合高质量视频采集,而USB接口,接口简单,但有性能瓶颈,只能用于低质量的视频采集。
以上程序可以正确的进行摄像头的视频采集与显示,但是最大只能采集到176 × 144 的低质量图像,如果采集分辨里达到320 * 240 图像会非常卡,有明显的延迟与丢帧现象,这种原因是USB1.1每秒所传的帧数有限造成的。USB1.1最大每秒可传的帧数由图像大小和USB速度共同决定。下面以320×240 YUYV格式的图像为例,计算USB1.1最大每秒可传的帧数。