Example #1
0
void CameraV4LPublisher::publish(const cv::Mat& img)
{
  sensor_msgs::Image msgImage;
  cv_bridge::CvImage cvImg;

  if ( img.channels() == 3 && img.depth() == CV_8U )
    cvImg.encoding = "bgr8";
  else if ( img.channels() == 1 && img.depth() == CV_8U )
    cvImg.encoding = "mono8";
  else
  {
    std::runtime_error("Error in CameraV4LPublisher::run(): only 24-bit RGB and 8-bit Mono images are supported");
  }

  if ( img.data != NULL )
    cvImg.image = img;
  cvImg.toImageMsg(msgImage);

  msgImage.header.stamp = ros::Time::now();
  _camInfoMsg.header.stamp = msgImage.header.stamp;
  _cameraPublisher->publish(msgImage, _camInfoMsg, msgImage.header.stamp);
}