cv_bridge::toCvCopy():ROS下的sensor_msgs/ImageConstPtr,和图像压缩类型(例如:sensor_msgs::image_encodings::RGB8),Subscriber 来的图像不能直接使用,需要copy出来。其功能是实现复制图像信息这样,得到副本,这样我们可以从副本的CvImage中提取cv::Mat类型的图像进行处理。
例如
void convert_callback(const sensor_msgs::ImageConstPtr& msg)
{
cv_bridge::CvImagePtr cv_ptr; // 声明一个CvImage指针的实例
try
{
cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::RGB8); //将ROS消息中的图象信息提取,生成新cv类型的图象,复制给CvImage指针
}
catch(cv_bridge::Exception& e) //异常处理
{
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
image_process(cv_ptr->image); //得到了cv::Mat类型的图象,在CvImage指针的image中,将结果传送给处理函数
}