ros2 / demos

Apache License 2.0
502 stars 330 forks source link

RGB order flipped when using cam2image with showimage #612

Open jjd9 opened 1 year ago

jjd9 commented 1 year ago

Bug report

Required Info:

Steps to reproduce issue

Open two terminals and source the ros2 space in each (i.e. source /opt/ros/iron/setup.bash)

In terminal 1, run the cam2image executable

ros2 run image_tools cam2image --ros-args -p show_camera:=true

In terminal 2, run the showimage executable

ros2 run image_tools showimage

Expected behavior

The image being published and displayed by cam2image matches the image displayed by showimage.

Actual behavior

cam2image reads a BGR image from the camera, publishes it as a CV_U8C3, cv::Mat image, which does not preserve the channel ordering information. showimage receives the image and assumes that since it is a CV_U8C3, cv::Mat, it should convert it from RGB to BGR. But since that is not true, the result is an image whose channel ordering is flipped.

Here is the output I am getting (Left image: cam2image visual, Right image: showimage visual)

image

Thank you for your time! (-:

Yadunund commented 1 year ago

I encounter this problem as well. Perhaps the solution is to add a parameter to let users override the encoding in cam2image/showimage. Somewhat similar to https://github.com/ros-perception/vision_opencv/pull/505

EwingKang commented 8 months ago

I encountered a similar problem with the ros2 run image_tools showimage tool. The source image is a ROS image converted from cv_bridge::CvImage, with proper "bgr8" desgination. The RVIZ can display the image correctly while the showimage tool shows reversed R-B channel.