[ros-users] CvBridge::encoding_as_cvtype does not support bayer formats

Markus Bader markus.bader at tuwien.ac.at
Wed Aug 31 08:44:48 UTC 2011


Hi

ROS::Diamondback at Ubuntu

The function CvBridge::encoding_as_cvtype does not supprot bayer
formats, therefore it will crash in some cases.
I suggest to change the function to the following and to make it static.
 static int encoding_as_cvtype(std::string encoding)
    {
      if (encoding == "8UC1") return CV_8UC1;
      if (encoding == "8UC2") return CV_8UC2;
      if (encoding == "8UC3") return CV_8UC3;
      if (encoding == "8UC4") return CV_8UC4;
      if (encoding == "8SC1") return CV_8SC1;
      if (encoding == "8SC2") return CV_8SC2;
      if (encoding == "8SC3") return CV_8SC3;
      if (encoding == "8SC4") return CV_8SC4;
      if (encoding == "16UC1") return CV_16UC1;
      if (encoding == "16UC2") return CV_16UC2;
      if (encoding == "16UC3") return CV_16UC3;
      if (encoding == "16UC4") return CV_16UC4;
      if (encoding == "16SC1") return CV_16SC1;
      if (encoding == "16SC2") return CV_16SC2;
      if (encoding == "16SC3") return CV_16SC3;
      if (encoding == "16SC4") return CV_16SC4;
      if (encoding == "32SC1") return CV_32SC1;
      if (encoding == "32SC2") return CV_32SC2;
      if (encoding == "32SC3") return CV_32SC3;
      if (encoding == "32SC4") return CV_32SC4;
      if (encoding == "32FC1") return CV_32FC1;
      if (encoding == "32FC2") return CV_32FC2;
      if (encoding == "32FC3") return CV_32FC3;
      if (encoding == "32FC4") return CV_32FC4;
      if (encoding == "64FC1") return CV_64FC1;
      if (encoding == "64FC2") return CV_64FC2;
      if (encoding == "64FC3") return CV_64FC3;
      if (encoding == "64FC4") return CV_64FC4;
      if (encoding == "rgb8") return CV_8UC3;
      if (encoding == "bgr8") return CV_8UC3;
      if (encoding == "rgba8") return CV_8UC4;
      if (encoding == "bgra8") return CV_8UC4;
      if (encoding == "mono8") return CV_8UC1;
      if (encoding == "mono16") return CV_16UC1;
      if (encoding == "yuv422") return CV_8UC2;
      if (encoding == "yuv") return CV_8UC3;
      if (encoding == "bayer_rggb8") return CV_8UC1;
      if (encoding == "bayer_bggr8") return CV_8UC1;
      if (encoding == "bayer_gbrg8") return CV_8UC1;
      if (encoding == "bayer_grbg8") return CV_8UC1;
      if (encoding == "bayer_grbg16") return CV_16UC1;
      if (encoding == "bayer_bggr16") return CV_16UC1;
      if (encoding == "bayer_gbrg16") return CV_16UC1;
      if (encoding == "bayer_grbg16") return CV_16UC1;
      return -1;
    }



More information about the ros-users mailing list