OpenCV: a gravação muda os valores dos pixels dos canais ao salvar

Estou lendo uma imagem e processando no canal azul sem alterar os canais vermelho e verde.

Quando terminei de processar o canal azul, juntei novamente os três canais em uma imagem RGB. e quando eu uso o imshow para visualizar os canais, tudo fica bem e posso ver que as alterações que fiz apenas afetam o canal azul e não afetam o vermelho nem o verde.

Até este ponto, tudo está bem!

Mas quando eu salvo a imagem usando a gravação, a imagem resultante é um pouco diferente, pois as alterações feitas no canal azul parecem propagadas para os canais vermelho e verde, é como se a gravação estivesse fazendo algum tipo de média entre os três canais:

 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;

Existe alguma solução para evitar esse comportamento?

questionAnswers(1)

yourAnswerToTheQuestion