在ros裏使用Gige相機,並轉換圖像格式爲opencv mat

最近在做無人駕駛方面的東西,老師給了一個攝像頭,是Gige協議,公司叫microview的不知名公司,連驅動也只有ubuntu16.04的。百度一搜,有關ROS的都是USB攝像頭,仔細想想,USB攝像頭還是小兒科了一點,性能應該不如千兆網口的。基本現在市面買的攝像頭也沒提供ros方案。於是只能自己寫package。

用千兆網口攝像機的幾種解決方案

1千兆網口,但協議是rstp之類的網絡攝像頭。這種攝像頭是輸出h.265或者MJPEG之類的格式。不管在opencv還是ros都容易調用
2 gige/gig version協議攝像頭。這是本文重點。
如果買的是巴斯勒(basler)或者prosilica牌子的攝像頭,你可以:

1 使用現有包
basler有官方的ros包,名稱叫做pylon-ros-camera。這是專門爲basler品牌設計的ros package。同時,basler官網可以下載pylon軟件,功能界面都不錯,方便調參。prosilica_driver是prosilica相機的package。經過測試,我的相機不能被它們識別。

當你買的是其他品牌時候:
首先我找到了camera_aravis這個ros package。相當不錯,基本支持了所有的攝像機協議,同時默認發佈兩個topic: /camera/image_raw和/camera/camera_info。
其實這時候就完全可以在ros下使用了。可是在rviz的image界面訂閱/camera/image_raw的時候,圖像黑屏,奇怪的是一直在顯示接收到圖片。最終發現,camera_aravis自動將增益設置爲1。正常情況下,增益不應該低於15。

進一步改進

此時,你應該已經能在rviz下看到接收到的圖像了。但你發現是黑白的,爲了有更好的效果,以及爲了後期使用視覺算法,我決定將其轉換成OPENCV的 MAT圖像格式。
一開始我想用image_proc包實現,但始終報錯,

編譯自己的ROS包

我考慮過對每個像素進行操作,通過指針

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章