[問題] skimage.io.imread()讀圖檔底色是黃色?

作者: dosiris (希望大家開心)   2025-12-28 06:18:59
為瞭解slicing的color channels是怎麼回事,最簡單的方法就是先製作一張有RGB三色的圖片:
https://i.meee.com.tw/33EcphL.jpg
再用skimage.io.imread()圖檔後,應該就能過濾掉紅、綠、藍色。結果發現:
from skimage.io import imread, imsave
img = imread('fig.jpg')
test = img[:, :, 0]
plt.imshow(test)
https://i.meee.com.tw/kfJN1cK.png
紅色確實被濾掉了,但是怎麼底色和紅色方塊都變成黃色?
(圖片背景色確定為白色而非透明)
有辦法套用紅色濾鏡並去掉黃色底色嗎? 謝謝!
作者: Hsins (翔)   2025-12-28 20:34:00
因為他預設的 colormap (cmap) 是 viridis,所以過濾後就是亮黃色,你該指定改用 gray 的 cmap。關鍵字有給你了,要找到怎麼處理應該不難
作者: dosiris (希望大家開心)   2025-12-29 06:37:00
謝謝! plt.imshow(test, cmap='gray') 確實就紅色塊和底色正確變白 只是藍綠色塊也變灰階 我再試試其他cmap能否讓藍綠色塊正確顯色
作者: Hsins (翔)   2025-12-29 14:50:00
不是... 你的 source code 會讓 test 變成一個二維的陣列他本來就是灰階的...如果你要的是 "套紅色濾鏡" 類似紅色玻璃紙的效果,應該用img[:, :, 0] = 255 這邊的 0 是 R 通道
作者: dosiris (希望大家開心)   2025-12-29 16:52:00
瞭解 謝謝分享
作者: fragmentwing (片翼碎夢)   2024-02-01 18:35:00
注意plt繪製圖片時 你給多頻道(三維陣列) 和單頻道(二維陣列) 時繪製方式是不同的要達到你要的效果 陣列必須保持在三維 不要的原色填入0值 而不是省略維度

Links booklink

Contact Us: admin [ a t ] ucptt.com