在上节已经实现了单张图片的ROS实現而在现实中,我们一般是使用网络摄像头头来获取图像这次要实现在ROS中使用网络摄像头头传输图像,我使用的是罗技的usb网络网络摄潒头头首先我们需要获取网络摄像头头的型号,如下所示:
我所使用的是罗技的C270网络网络摄像头头.接下来我们要为网络摄像头头安装驱动,我使用的是cheese,这个驱动的好处是在ubuntu环境下直接apt-get获得
安装完成后,插上网络摄像头头可以发现在dev/目录下多了一个viedo0的设备,这个说明网络摄像头头驱动巳经安装完成.接下来开始在ROS中使用它.使用的方式是通过opencv函数来实现.
首先还是要创建一个包,写一个驱动网络摄像头头的文件,命名为my_publisher.cpp,作用是获取图像并打包成ros格式发送出去,创建包的方法与单张图片一样,my_publisher.cpp内容如下:
接下来要把设计到的各种包和opencv在CmakeList中声明一下,添加以下语句
编译过程可能会出现错误,其中一个就是cv::WaitKey不能识别,这个问题到最后依然没有解决,我是直接把它注释掉,这样也没什么影响.接下来开始运行程序,首先启动ROS. 这時候会看到我们的网络摄像头头灯已经亮起来了,0代表默认网络摄像头头,如果有多个网络摄像头头,则第二个是1,依次类推.
这时候如果没有错误嘚话就会弹出图像窗口
可以看到我们网络摄像头头传输出来的图像,到此整个程序结束!