11

我对skimagePython 中用于图像处理的 scikit-image () 库非常陌生(几分钟前就开始了!)。我曾经imreadnumpy.ndarray. 该数组是 3 维的,其中第三维的大小为 3(即图像的红色、绿色和蓝色分量各一个)。

rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)

我试图将绿色通道提取为:

green_image = rgb_image[:,:,1]

但是当我将此图像矩阵写入输出文件时:

imsave("green_output_image.jpg",green_image)

我得到的图像看起来并不只有绿色!

4

1 回答 1

28

您提取的只是一个通道,这显示了每个像素有多少绿色。这最终将被可视化为灰度图像,其中较暗的像素表示这些点没有太多的“绿色”,而较亮的像素表示这些点有大量的“绿色”。

如果我正确地解释了您所说的话,您希望将每种颜色的“绿色”形象化。在这种情况下,将红色和蓝色通道都设置为零并保持绿色通道不变。

所以:

green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0

请注意,我已经复制了您的原始图像并更改了频道,而不是修改原始图像以备不时之需。green_image但是,如果您只想提取绿色通道并将其可视化为我上面提到的灰度图像,那么使用变量的设置执行上面所做的操作就可以了。

于 2015-04-19T05:04:53.700 回答