[ros-users] Converting Kinect RGB image to OpenCV gives wrong colours

Aslund sebastian.aslund at gmail.com
Sat Mar 5 14:51:30 UTC 2011


Hey everyone

I have been playing a bit with the kinect camera using the openni driver.
When running openni_node.launch and viewing the rgb image using rviz, then
everything looks perfect, but when I create a node that has to the purpose
to read the rgb image, convert it to a cv image and displaying it using
imshow, then the colours are all wrong. Red is blue, blue is red, green is
something yellow and yellow is light blue. I have been trying to use RGB8
and BGR8 encodings, but nether of them shows any difference.
A sample of my code is shown below, inspired from the example cv_bridge
tutorial<http://www.ros.org/wiki/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages>:


void processRGB::processImage( const sensor_msgs::Image::ConstPtr& img ) {
    CvImagePtr cv_ptr;

    try {

        cv_ptr = toCvCopy(img, enc::BGR8); //enc::RGB8 also used

    } catch (cv_bridge::Exception& e) {

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

    imshow("Kinect RGB image", cv_ptr->image);
    waitKey(3);
}

Does anyone know what might cause this problem?

Regards

Sebastian Aslund
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20110305/ac2aecb4/attachment-0002.html>


More information about the ros-users mailing list