【发布时间】:2017-05-29 12:42:16
【问题描述】:
我正在尝试使用skikit learn 为RGB 图像创建蒙版。我想创建一个仅选择等于 [0,10,0] 的像素的蒙版,即绿色通道上的 10。然后只显示那些像素。这应该是直截了当的,类似于http://scikit-image.org/docs/dev/user_guide/numpy_images.html,但我很挣扎。
如果图像是加载的 jpg,我可以这样做
mask = image == [0,10,0]
image = image[mask]
viewer = ImageViewer(image)
viewer.show()
但是,我得到:
TypeError: Invalid dimensions for image data
如果我然后打印(掩码),我意识到不是每个像素的一系列真假,我得到:
[[ True False True]
[ True False True]
[ True False True]
...,
[ True False True]
[ True False True]
[ True False True]]
请注意,我图像中的第一个像素是黑色的。所以看起来它正在做的是将 [0,0,0] 与 [0,10,0] 进行比较,而不是引发 False,而是引发 True,False,True。
这似乎作为掩码失败了,因为我想每个像素都有 3 个掩码!
有没有人知道一种简单的方法来让这种遮罩与 RGB 图像一起使用?
谢谢
【问题讨论】:
-
你的
image数组的尺寸是多少,它与(n, 3)的形状匹配吗? -
不,是 (276, 274, 3)
-
你打算如何使用遮罩来展示那些特定的像素?因为遮罩后,您将不会拥有高度和宽度的 2D 格式。
-
好点,但scikit-image.org/docs/dev/user_guide/numpy_images.html 的示例中的“相机”肯定是 x,y,并且他们成功地使用一系列 True 和 False 成功地掩盖了这一点?我不确定为什么从 x,y 更改为 x,y,3 会阻止这个过程工作......
标签: python numpy scipy python-imaging-library