ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

@Dimitri: Thanks for letting me know that JPG doesn't support 16 bit images on OpenCV. I tried the convertTo function as you mentioned, but for some reason gave a completely dark image. I guess the image was normalized between 0-1. Instead i tried cv::normalize() which worked. Here is the modified code.

void img_listener::callbackirimage(const sensor_msgs::Image::ConstPtr& msg)
{
        ir_img_ptr=cv_bridge::toCvCopy(msg,sensor_msgs::image_encodings::MONO16);
        rep_ros_ir_time[ir_image_count] = msg->header.stamp.toSec();
    #ifdef _DEBUG
        ROS_INFO("The reported color image time :%15.15f",rep_ros_clr_time[color_image_count]);
    #endif
        //ir_img_ptr->image.convertTo(ir_img[ir_image_count],CV_8UC1,(double)(1.0/256.0),0);
        cv::normalize(ir_img_ptr->image,ir_img[ir_image_count],0,255,cv::NORM_MINMAX,CV_8UC1);
        //ir_img[ir_image_count].convertTo(ir_img[ir_image_count],CV_8UC1,256,0);
        //ir_img[ir_image_count] = ir_img_ptr->image;
        if (ir_image_count >= FRAME_RATE_COLOR_IMG)
            ir_image_count=0;
        else
            ir_image_count++;
}

Thanks for the help. I really appreciate it.