該死的GigEVison,終於能夠在Linux下運行了!

實驗室 用到的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);

5.這樣,當啓動cameras_work_simultaneously程序就能夠立即看到圖像了,但是發現圖像很滯後,把device_->ClearImageBuffer();加到device->PopImage(imageInfo);之後,畫面開始變得很流暢了!但是大概過了3分鐘,就出現lost  package的問題,估計是有內存泄漏造成的,明天在繼續解決。。。。。



發佈了35 篇原創文章 · 獲贊 12 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章