win7自建网站,宁波男科公立医院哪家最好,商贸城网站建设方案,汉南做网站一、工具
ubuntu18.04
ROSopencv2
编译器#xff1a;Visual Studio Code
二、原理
图像信息
ROS数据形式#xff1a;sensor_msgs::Image
OpenCV数据形式#xff1a;cv:Mat
通过cv_bridge()函数进行ROS向opencv转换
cv_bridge是在ROS图像消息和OpenCV图像之间进行转…一、工具
ubuntu18.04
ROSopencv2
编译器Visual Studio Code
二、原理
图像信息
ROS数据形式sensor_msgs::Image
OpenCV数据形式cv:Mat
通过cv_bridge()函数进行ROS向opencv转换
cv_bridge是在ROS图像消息和OpenCV图像之间进行转换的一个功能包。
ros-opencv
cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
可以在回调函数里进行转换 cv_bridge::CvImagePtr cv_ptr;try{cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);}catch (cv_bridge::Exception e){ROS_ERROR(cv_bridge exception: %s, e.what());return;} 将ROS图像消息转换在OpenCV中使用可以进行图像处理和opencv操作。
opencv-ros
使用toImageMsg()成员函数
try
{msg cv_bridge::CvImage(std_msgs::Header(), bgr8, frame).toImageMsg();
}catch (cv_bridge::Exception e)
{ROS_ERROR(cv_bridge exception:%s,e.what());
} 驱动相机
通过opencv直接打开相机0vieo_device为video0 VideoCapture cap(video_device); //dev/video0if(!cap.isOpened()) { ROS_ERROR(Can not opencv video device\n); return 1; }
话题发布
ROS中标准的消息订阅和发布方式为 ros::NodeHandle nh; ros::Subscriber sub nh.subscribe(topic, 1, Callback); ros::Publisher pub nh.advertisesensor_msgs::Image(topic, 1); 只会发布单一话题
使用image_transport进行发布话题 ros::NodeHandle nh; image_transport::ImageTransport it(nh); image_transport::Subscriber sub it.subscribe(topic, 1, Callback); image_transport::Publisher pub it.advertise(topic, 1); 这种方式会发布一系列话题 然后将转换后的图像发布即可
三、使用
在摄像头画面加一个圆并发布出去 通过rqt_image_view查看话题 这里只进行简单的使用后续可以通过opencv进行颜色识别轮廓识别等等以及人脸数字识别将所有的opencv项目通过ROS包装起来。 这里附上源码链接
https://github.com/jiezz12/Opencv_ros.githttps://github.com/jiezz12/Opencv_ros.git 参考
http://wiki.ros.org/image_transport
https://my.oschina.net/u/4273421/blog/3587403