Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Because data format in image_raw is the depth data in mm, maybe you should try with the /camera/depth/image If you want to use the image_raw, I think the below codes is helpful for you

void imageCb_d(const sensor_msgs::ImageConstPtr& msg)
  {

    cv_bridge::CvImagePtr cv_ptr;


    try
    {
      cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::TYPE_32FC1);

    }
    catch (cv_bridge::Exception& e)
    {
      ROS_ERROR("cv_bridge exception: %s", e.what());
      return;
    }




    double minVal, maxVal;
    minMaxLoc(cv_ptr->image, &minVal, &maxVal); //find minimum and maximum intensities
    //Mat draw;
    cv_ptr->image.convertTo(blur_img, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));



    cv::imshow("Blur", blur_img);
    cv::imshow("Depth", cv_ptr->image);


    cv::waitKey(3);

    image_pub_.publish(cv_ptr->toImageMsg());
  }

};