簡體   English   中英

OpenCV:imwrite 在保存時更改通道像素值

[英]OpenCV : imwrite changes the channels pixels values when saving

我正在讀取圖像並對藍色通道進行一些處理,而不更改紅色和綠色通道。

當我處理完藍色通道后,我將三個通道合並回一個 RGB 圖像。 當我使用 imshow 查看頻道時,一切正常,我可以看到我所做的更改僅影響藍色頻道,不會影響紅色和綠色頻道。

至此,一切正常!

但是當我使用 imwrite 保存圖像時,生成的圖像略有不同,因為在藍色通道上所做的更改似乎會傳播到紅色和綠色通道,就像 imwrite 在 3 個通道之間做某種平均:

 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;

有什么解決方案可以避免這種行為嗎?

JPG 是一種有損格式: https : //en.wikipedia.org/wiki/JPEG

JPEG (/ˈdʒeɪpɛɡ/ JAY-peg) 1是一種常用的數字圖像有損壓縮方法,特別是對於數字攝影產生的圖像。 壓縮程度可以調整,允許在存儲大小和圖像質量之間進行可選擇的權衡。 JPEG 通常可實現 10:1 壓縮,而圖像質量幾乎沒有明顯損失。

解決方案:使用像 PNG 這樣的無損格式來保存您的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM