在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包

我考虑过对每个像素进行操作,通过指针

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