[问题] 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
了解 谢谢分享

Links booklink

Contact Us: admin [ a t ] ucptt.com