OpenCV: imwrite cambia los valores de píxeles de los canales al guardar

Estoy leyendo una imagen y procesando algo en el canal azul sin cambiar los canales rojo ni verde.

Cuando terminé de procesar el canal azul, fusioné los tres canales en una imagen RGB. y cuando uso imshow para ver los canales, todo está bien y puedo ver que los cambios que he hecho solo afectan al canal Azul y no afectan a los rojos ni a los verdes.

Hasta este punto, ¡todo está bien!

Pero cuando guardo la imagen usando imwrite, la imagen resultante es ligeramente diferente, ya que los cambios realizados en el canal azul parecen propagarse a los canales rojo y verde, es como si imwrite está haciendo algún tipo de media entre los 3 canales:

 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;

¿Hay alguna solución para evitar este comportamiento?

Respuestas a la pregunta(1)

Su respuesta a la pregunta