閱讀646 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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下,看攝像頭信息步驟如下:
我的電腦右鍵-->設備管理-->圖像處理設備-->雙擊-->詳細信息

上圖中,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) mxhaard@magic.fr
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卡,所以,簡單的讓攝像頭獨占這個卡就解決了。

 

 

 

 

 


 

版權申明:
轉載文章請注明原文出處https://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5303078.aspx

並請聯係譚海燕本人或者前往譚海燕個人主頁留言

 

最後更新:2017-04-02 04:01:46

  上一篇:go linux條件變量例程
  下一篇:go 生命之偉大的事業