diff --git a/aruco_pose/src/aruco_map.cpp b/aruco_pose/src/aruco_map.cpp index 796cf3e5..fb48ee05 100644 --- a/aruco_pose/src/aruco_map.cpp +++ b/aruco_pose/src/aruco_map.cpp @@ -399,12 +399,19 @@ publish_debug: void publishMapImage() { + cv::Size size(image_width_, image_height_); cv::Mat image; cv_bridge::CvImage msg; - drawPlanarBoard(board_, cv::Size(image_width_, image_height_), image, image_margin_, 1); - cv::cvtColor(image, image, CV_GRAY2BGR); - msg.encoding = sensor_msgs::image_encodings::BGR8; + if (!board_->ids.empty()) { + _drawPlanarBoard(board_, size, image, image_margin_, 1); + } else { + // empty map + image.create(size, CV_8UC1); + image.setTo(cv::Scalar::all(255)); + } + + msg.encoding = sensor_msgs::image_encodings::MONO8; msg.image = image; img_pub_.publish(msg.toImageMsg()); } diff --git a/aruco_pose/src/draw.cpp b/aruco_pose/src/draw.cpp index 7bd593d4..da992c30 100644 --- a/aruco_pose/src/draw.cpp +++ b/aruco_pose/src/draw.cpp @@ -6,7 +6,7 @@ using namespace cv; using namespace cv::aruco; -void drawPlanarBoard(Board *_board, Size outSize, OutputArray _img, int marginSize, +void _drawPlanarBoard(Board *_board, Size outSize, OutputArray _img, int marginSize, int borderBits) { CV_Assert(outSize.area() > 0); diff --git a/aruco_pose/src/draw.h b/aruco_pose/src/draw.h index ce9d41d4..18ce1cc6 100644 --- a/aruco_pose/src/draw.h +++ b/aruco_pose/src/draw.h @@ -3,4 +3,4 @@ #include #include -void drawPlanarBoard(cv::aruco::Board *_board, cv::Size outSize, cv::OutputArray _img, int marginSize, int borderBits); +void _drawPlanarBoard(cv::aruco::Board *_board, cv::Size outSize, cv::OutputArray _img, int marginSize, int borderBits);