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); }