我正在读取一张图片,并在不改变红色和绿色通道的情况下对蓝色通道进行处理。
当我完成了对蓝色通道的处理后,我将三个通道合并成一个RGB图像。当我使用imshow查看通道时,一切都很正常,我可以看到所做的更改仅影响蓝色通道,而不影响红色和绿色通道。
到这里为止,一切都很好!
但是,当我使用imwrite保存图片时,生成的图片略有不同,似乎对蓝色通道所做的更改会传播到红色和绿色通道,就像imwrite在三个通道之间做了某种平均值:
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;
有没有任何解决方案可以避免这种行为?