From 4327ab2c0d196b226fbd226a1cda85d49f3c8aee Mon Sep 17 00:00:00 2001 From: nihui Date: Tue, 8 Aug 2023 17:39:07 +0800 Subject: [PATCH] do not convert RGB/BGR inplace on imencode/imwrite --- highgui/src/highgui.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/highgui/src/highgui.cpp b/highgui/src/highgui.cpp index 62375431..93000a86 100644 --- a/highgui/src/highgui.cpp +++ b/highgui/src/highgui.cpp @@ -201,12 +201,16 @@ bool imwrite(const String& filename, InputArray _img, const std::vector& pa else if (img.type() == CV_8UC3) { c = 3; - cvtColor(img, img, COLOR_BGR2RGB); + Mat img2 + cvtColor(img, img2, COLOR_BGR2RGB); + img = img2; } else if (img.type() == CV_8UC4) { c = 4; - cvtColor(img, img, COLOR_BGRA2RGBA); + Mat img2 + cvtColor(img, img2, COLOR_BGRA2RGBA); + img = img2; } else { @@ -368,12 +372,16 @@ bool imencode(const String& ext, InputArray _img, std::vector& buf, const else if (img.type() == CV_8UC3) { c = 3; - cvtColor(img, img, COLOR_BGR2RGB); + Mat img2; + cvtColor(img, img2, COLOR_BGR2RGB); + img = img2; } else if (img.type() == CV_8UC4) { c = 4; - cvtColor(img, img, COLOR_BGRA2RGBA); + Mat img2; + cvtColor(img, img2, COLOR_BGRA2RGBA); + img = img2; } else {