我对 Python 中用于图像处理的 scikit-image (skimage
) 库非常陌生(几分钟前开始!)。我使用 imread
读取了 numpy.ndarray
中的图像文件。该数组是三维的,其中第三维的大小为 3(即图像的红色、绿色和蓝色分量各一个)。
rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)
我尝试将绿色 channel 提取为:
green_image = rgb_image[:,:,1]
但是当我将这个图像矩阵写入输出文件时:
imsave("green_output_image.jpg",green_image)
我得到的图像看起来不仅是绿色的!
最佳答案
您要提取的只是一个 channel ,它会显示每个像素有多少绿色。这最终将可视化为灰度图像,其中较暗的像素表示这些点处没有太多“绿色”,而较亮的像素表示这些点处有大量“绿色”。
如果我正确地解释了您的意思,您希望将每种颜色的“绿色”可视化。在这种情况下,将红色和蓝色 channel 都设置为零,并保持绿色 channel 不变。
所以:
green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0
请注意,我已经复制了您的原始图像并更改了 channel ,而不是修改原始图像,以备不时之需。但是,如果您只想提取绿色 channel 并将其可视化为我上面提到的灰度图像,那么使用 green_image
变量的设置执行上述操作就可以了。
关于python - 如何使用 Scikit-Image 库从 Python 中的 RGB 图像中提取绿色 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718877/