OpenCV: imwrite ändert die Pixelwerte des Kanals beim Speichern von

Ich lese ein Bild und bearbeite den blauen Kanal, ohne die roten oder grünen Kanäle zu ändern.

Wenn ich mit der Bearbeitung des blauen Kanals fertig bin, habe ich die drei Kanäle zu einem RGB-Bild zusammengeführt. und wenn ich imshow benutze, um die Kanäle anzusehen, ist alles in Ordnung und ich kann sehen, dass die Änderungen, die ich vorgenommen habe, nur den blauen Kanal betreffen und sie weder den roten noch den grünen betreffen.

is zu diesem Punkt ist alles in Ordnun

Aber wenn ich das Bild mit imwrite speichere, ist das resultierende Bild insofern etwas anders, als die auf dem blauen Kanal vorgenommenen Änderungen auf den roten und den grünen Kanal übertragen werden :

 image = imread('image.jpg', IMREAD_COLOR);
 split(image, channels);
// Create some changes on channels[0]

merge(channels, 3, image);
// Up to this point every thing is alright
imwrite("modified.jpg", image); // Image changes when written;

Gibt es eine Lösung, um dieses Verhalten zu vermeiden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage