我试图将cv :: Mat转换为sensor_msgs,以便我可以在ROS中发布它.
我的代码是这样的:
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();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了两种可能的解决方案:
[1]使用cv_bridge,CvImagePtr和toImageMsg(),但是CvImagePtr报告
断言(px!0)错误,我猜这意味着我必须初始化CvImagePtr.
但我不知道如何初始化它;
[2]使用fillImage和sensor_msgs :: Image,
但fillImage的第六个参数必须是void*而不是Mat*
希望有人能帮助我!
有没有一种有效的方法将cv :: Mat(或IplImage)转换为sensor_msgs?
THX提前!