Hi Yanming,
In ROS, the conversion is done
here:
cv_bridge::CvImageConstPtr ptrImage = cv_bridge::toCvShare(image, image->encoding.compare(sensor_msgs::image_encodings::TYPE_8UC1)==0?"":"mono8");
Visual odometry uses gray-scale images so it is why they are converted to mono8 if they are bgr8 or rgb8. If they are not converted here, they will be in Odometry implementation like in the standalone version (OdometryOpticalFlow
here and OdometryBOW indirectly from Memory object used
here).
Regards,
Mathieu