From 8a88ded7b9b6f0582423e99f939ce5fb89967b7b Mon Sep 17 00:00:00 2001 From: David Yackzan Date: Fri, 31 Jan 2025 13:06:48 -0700 Subject: [PATCH] Enable grayscale encoding in LibavStreamer --- src/image_streamer.cpp | 4 ---- src/libav_streamer.cpp | 8 +++++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/image_streamer.cpp b/src/image_streamer.cpp index 564e1dc..520ad5d 100644 --- a/src/image_streamer.cpp +++ b/src/image_streamer.cpp @@ -148,10 +148,6 @@ cv::Mat ImageTransportImageStreamer::decodeImage( cv::Mat_ float_image = float_image_bridge; double max_val; cv::minMaxIdx(float_image, 0, &max_val); - - if (max_val > 0) { - float_image *= (255 / max_val); - } return float_image; } else { // Convert to OpenCV native BGR color diff --git a/src/libav_streamer.cpp b/src/libav_streamer.cpp index 62f293f..211a163 100644 --- a/src/libav_streamer.cpp +++ b/src/libav_streamer.cpp @@ -225,7 +225,13 @@ void LibavStreamer::sendImage( first_image_time_ = time; } - AVPixelFormat input_coding_format = AV_PIX_FMT_BGR24; + AVPixelFormat input_coding_format; + if (img.channels() == 1) { + img.convertTo(img, CV_32FC1); + input_coding_format = AV_PIX_FMT_GRAYF32; + } else { + input_coding_format = AV_PIX_FMT_BGR24; + } AVFrame * raw_frame = av_frame_alloc(); av_image_fill_arrays(