我已经从一个节点发布了一张图片,然后我想在我的第二个节点中订阅该图片。但是在第二个节点中订阅它之后,当我尝试将它存储在 cv::Mat 图像中时,它会被扭曲。
以下代码中的 patchImage 失真。有一些水平线和同一图像的四个图像合并。
我的代码概述如下。
first_node_publisher
{
        im.header.stamp = time;
        im.width = width;
        im.height = height;
        im.step = 3*width;
        im.encoding = "rgb8";
        image_pub.publish(im);
} 
second_node_imageCallBack(const sensor_msgs::ImageConstPtr& msg)
{
       cv::Mat patchImage;
       cv_bridge::CvImagePtr cv_ptr;
       try
            { 
                cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::RGB8); //
            }
        catch (cv_bridge::Exception& e)
            {
                ROS_ERROR("cv_bridge exception: %s", e.what());
            }
        patchImage=cv_ptr->image;
        imshow("Received Image", patchImage); //This patchImage is distored
    }