fedora 9下驱动摄像头采集图像手记

最近一个月,在做视屏图像采集方面的项目。我安装了的是fedora 9。在fedora 9下让摄像头采集数据可谓是费尽了我半个月的时间。看似简单的问题,不知道我为什么做了这么长时间。
   首先,摄像头要有保证。现在我发现市面上的摄像头芯片很多都是linux万能驱动无法无法驱动的。如果我没猜错的话,可能你现在手里的摄像头就是 linux万能摄像头驱动不支持的。为了能在linux下摄像头正常工作。最好是去买一个中星微3xx的摄像头(最常见的是中星微301,中星微303 等),这些都是linux万能摄像头驱动能支持的。中星微比较老版本的摄像头一般都能驱动。
   先说下如何看摄像头厂商和产品系列。在linux下用命令

#lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam Bus 002 Device 002: ID 0e0f:0002 Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

其中带WebCam或者是USB Cammera字样的就是你的摄像头信息。上面橘黄色的是我摄像头信息。
ID:0ac8 :301b  其中0ac8中星微厂商代号,后面的301b是该产品系列号。厂商代号是全球唯一的。只要该代号是0ac8,就说明该摄像头是中星微的。
在windows下,看摄像头信息步骤如下:
我的电脑右键-->设备管理-->图像处理设备-->双击-->详细信息

fedora 9下驱动摄像头采集图像手记_第1张图片

上图中,VID_后面是厂商代号。PID_后面是产品系列号。
    摄像头有了之后就开始安装摄像头驱动。由于fedora 9,已经集成了UVC驱动,这个驱动里面其实是已经有了支持海量的摄像头的驱动。但是由于UVC不支持V4L1编程,支持持V4L2编程。现行了大多关于 图像采集的都是基于V4L1编程的。如果你的内核是自己下载的内核源码,那么在编译内核的时候,不要把UVC选上就是了。
    然后安装万能驱动,网上的linux摄像头万能驱动都很多。但是支持内核2.6.25或者更高版本内核的不多。经过我的多次试验,用不同的内核版本去安装 各种摄像头万能驱动,发现,只有gspcav1-20071224这个版本。其实这个版本应该是该驱动的终结版本,它原本是由一个德国医生开发的,现在已 经不对这个驱动做更新了。
   下载后直接安装这个驱动,编译的时候通不过。
   首先下载SDL-1.2.10.tar.gz。

#tar xzvf SDL-1.2.10.tar.gz #./configure #make #make install

然后下载spcaview-20051212.tar.gz

#tar xzvf spcaview-20051212.tar.gz #make #make install

给spcaview添加环境变量

export PATH=".:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin"

此过程中,会遇到asm/page.h找不到的问题,page.h这个文件在/usr/src/kernels /2.6.25-14.fc9.i686/include/asm-x86/page.h。把这个page.h文件复制到/usr/include /asm下就ok了。
 
安装方式USB摄像头驱动
下载安装gspcav1-20071224.tar.gz

#./gspca_build

检查时候安装成功方式如下

#lsmod | grep gspc gspca 646884 0 videodev 30208 2 zc0301,gspca

出现上面的信息说明安装成功了。
如果设备已经加载就会出现下列信息

#ls -lh /dev/video0 crw-rw---- 1 root root 81, 0 2009-11-01 21:04 /dev/video0

现在可以来测试摄像头了

# spcaview -d /dev/video0 -f jpg -s 320x240

用上面的命令看看效果。
我的效果如下。哈哈
 
对于部分错误的解决办法参考下面内容
常见错误
如果运行spcaview命令后出现如下错误信息:
spcaview -d /dev/video0 -f jpg -s 320x240
Spcaview version: 1.1.7 date: 06:11:2006 (C) [email protected]
size width: 320 height: 240
Initializing SDL.
SDL initialized.
bpp 3 format 21
Using video device /dev/video0.
Initializing v4l.
ERROR opening V4L interface
: No space left on device
.
参考地址中对此问题的解释和解决方案是:
Problem
When other USB devices are present on the same host controller bus as the camera, the bandwidth requirements of the spca5xx driver are not being met, with some hardware configurations. The spca5xx driver is asking for more bandwidth than is available which results in the following error messages:

No space left on device
can't open /dev/video0: No space left on device.

There is a very good howto for the Spca5xx driver at https://help.ubuntu.com/community/Spca5xx
if you haven't encountered the “No space left on device” error message.
-----------------------------------------------
Solutions
1.    Solution 1 - Put the camera on a separate USB host controller bus.
2.    Solution 2 - Compile and install the modified spca5xx source code.
3.    Solution 3 - Buy an separate USB controller card. (This is a last resort solution which I wanted to avoid at all cost.)
----------------------------------------------
说明:usb总线占用带宽不够,
让摄像头独占一个usb卡可以解决。如果无条件,可以参考参考地址中的方法2解决。因为我有个USB卡,所以,简单的让摄像头独占这个卡就解决了。

 

 

 

 

 

 

版权申明:
转载文章请注明原文出处http://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5303078.aspx

并请联系谭海燕本人或者前往谭海燕个人主页留言

 

你可能感兴趣的:(编程,windows,linux,interface,产品,图像处理)