From 03476734d4ba7939ea2f9e8cc8e66392fe21d76b Mon Sep 17 00:00:00 2001 From: linbo <1034003879@qq.com> Date: Wed, 26 Aug 2026 16:26:29 +0800 Subject: [PATCH] fix(camera): normalize snapshot RGB channel order --- cmvr-es/service/grpc/src/grpc_camera_service.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cmvr-es/service/grpc/src/grpc_camera_service.cpp b/cmvr-es/service/grpc/src/grpc_camera_service.cpp index 449249ae..020d4d9e 100644 --- a/cmvr-es/service/grpc/src/grpc_camera_service.cpp +++ b/cmvr-es/service/grpc/src/grpc_camera_service.cpp @@ -12,6 +12,7 @@ #include #include #include +#include using namespace std; using namespace cmvr::service; @@ -219,6 +220,13 @@ grpc::Status gRPCCameraServiceImpl::GetRGBImage(grpc::ServerContext* context, response->mutable_header()->set_success(true); setCurrentTimestamp(response->mutable_header()->mutable_timestamp()); + // Keep the single-frame contract explicit: FrameData::U8C3 is RGB + // byte order, while OpenCV/RealSense images are normally BGR. + if (image.type() == CV_8UC3) { + cv::Mat rgb_image; + cv::cvtColor(image, rgb_image, cv::COLOR_BGR2RGB); + image = std::move(rgb_image); + } auto imageType = image.type(); if (imageType == CV_8UC1) { response->mutable_color_frame()->set_type(api::FrameData::U8C1); @@ -337,9 +345,12 @@ grpc::Status gRPCCameraServiceImpl::GetRGBDImages(grpc::ServerContext* context, response->mutable_header()->set_success(true); setCurrentTimestamp(response->mutable_header()->mutable_timestamp()); - // color image is serialized in the existing OpenCV BGR byte order; - // clients convert it once when constructing an RGB image. + // Keep the single-frame contract explicit: FrameData::U8C3 is RGB + // byte order, while OpenCV/RealSense images are normally BGR. if (color_image.type() == CV_8UC3) { + cv::Mat rgb_image; + cv::cvtColor(color_image, rgb_image, cv::COLOR_BGR2RGB); + color_image = std::move(rgb_image); response->mutable_color_frame()->set_type(api::FrameData::U8C3); } else if (color_image.type() == CV_16UC3) {