3
我想将一个cv :: Mat转换为一个sensor_msgs,以便我可以在ROS中发布这个。如何将cv :: Mat转换为ros中的sensor_msgs?
我的代码仅仅是这样的:
while(ros::ok())
{
capture >> frame;
cv::imshow("Preview" , frame);
cv::waitKey(1);
//sensor_msgs::Image img_;
//fillImage(img_ , "rgb8" , frame.rows , frame.cols , 3 * frame.cols , frame);
//img_header.stamp = ros::Time::now();
//cv_bridge::CvImagePtr cv_ptr;
//cv_ptr->image = frame;
//image_pub_.publish(img_);
ros::spinOnce();
}
我已经尝试了两种可能的解决方案:
[1]使用cv_bridge,CvImagePtr和toImageMsg(),但CvImagePtr报告
断言(px!0)错误,我猜这意味着我必须初始化CvImagePtr。
但我不知道如何初始化它;
[2]使用fillImage和sensor_msgs ::图片,
但fillImage的第六个参数必须是*代替垫*
希望有人可以帮助我一个空白!
是否有一种将cv :: Mat(或IplImage)转换为sensor_msgs的有效方法?
THX提前!
看看这里:HTTP:/ /wiki.ros.org/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages (和这里:http://answers.ros.org/question/9765/how-to-convert-cvmat-to-sensor_msgsimageptr/) – alextoind 2014-11-23 10:29:31
thx亚历克斯,第二个链接帮助很多! – 2014-11-24 03:38:59