實驗室 用到的MaxxVision 公司的GigEVison camera, 在windows下能夠 運行,但在linux下總是 出現 編譯通過,運行時,能夠連接 上設備,但就是顯現圖像很慢,開始懷疑是
1. 硬件問題,去年在我的DELL新機器上跑,以爲 是 我到 ethenet 網卡 無法設置jambo特新所造成的,結果後來在我的 desktop上也出現同樣問題。
2. 系統驅動問題,因爲在windows下,在網卡到property---》 servers 裏要安裝 廠家提供的 stream filter kernel 驅動,當把GigEVisionClient程序移植到linux下時,運行就出現
這個警告。按掉“Close”按鈕後,能夠檢測到camera,但一 connect 就退出程序, 說是 :“Segmentation fault“如下。
bv5@bv5-desktop:~/MyPrograms/GigEVisionClient$ ./GigEVisionClient
API_ConnectDevice
valid ACK
1 0==0
Step2
Step3
Segmentation fault
猜測是 缺少這個驅動, 在網上看了 ,發現linux 內核裏 含有UVC的驅動,不需要單獨裝載,實驗自己到 web 攝像頭 能夠 正常工作,看來也不是這個原因。
3. 軟件環境的問題。自己找到Macus 弄的linux下用GigEVision到README文件,把相關的 第3方庫都check 了一邊,應該都齊了,但問題還在,最後想Lars要他們用到的sample程序,因爲他們 能夠在他們到機器上用得 起來。結果,他把相關到庫 和 他自己綜合的 庫 在我 機器上弄好後,他到代碼能夠 很好的運行, 就是在我的desktop上,如果eth0 和 eth1 都打開的話,就會出現 “找不到設備,連接不到設備”的錯誤。所以運行GigEVision
設備時,需要把internet 的eth0關掉。
4. 看來是我的代碼的問題了,查看 Lars的 MaxxClientTest 和 我的 cameras_work_simultaneously 程序,發現在提取出 圖像後,顯示時,他的 cvWaitKey(5);是 “5”,而我的卻是
”1“,當我改爲‘2’時,問題就解決了!!!(OpenCV 怎麼有這個問題!!!)
cvShowImage( "img", cvImgBgr );
cvWaitKey(5);