【发布时间】:2015-01-20 16:54:01
【问题描述】:
我正在尝试将 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();
}
我尝试了两种可能的解决方案:
[1] 使用 cv_bridge、CvImagePtr 和 toImageMsg(),但 CvImagePtr 报告
assert(px!0) 错误,我猜这意味着我必须初始化 CvImagePtr。
但是不知道怎么初始化;
[2] 使用 fillImage 和 sensor_msgs::Image,
但是fillImage的第六个参数必须是void*而不是Mat*
希望有人能帮助我!
有没有一种有效的方法可以将 cv::Mat(或 IplImage) 转换为 sensor_msgs ?
提前谢谢!
【问题讨论】:
-
谢谢 alex,第二个链接很有帮助!
标签: c++ pointers opencv type-conversion ros