【发布时间】:2019-05-03 21:03:46
【问题描述】:
我正在尝试创建一个用于某些图像操作的 8 位 1 通道掩码。我有一个图像,在original 图像中的某些像素填充有fuscia (255, 0, 255),这表明该像素应该用于掩蔽。
我的想法是简单地复制原始图片,然后用白色替换所有 fuscia 像素,并将所有非 fuscia 像素替换为黑色。我正在使用numpy.place 来执行此操作。但是,似乎只真正“应用”了最后一个 place 操作。
例如,在下面的代码中,我尝试首先将所有 fuscia 像素设置为白色,然后将所有非 fuscia 像素设置为黑色。但是,当我实际保存图像并查看时,只有非红褐色像素变黑了。
mask = original.copy()
np.place(mask, mask == (255, 0, 255), (255, 255, 255))
np.place(mask, mask != (255, 0, 255), (0, 0, 0))
mask = mask.reshape((h, w, 3))
mask = cv2.cvtColor(mask, cv2.COLOR_RGB2GRAY)
original
mask
我希望 fuscia 区域是白色的,但事实并非如此。这是fuscia颜色的灰度版本(112, 112, 112)
我对 numpy 还很陌生,所以我什至可能找错了树,可能有更简单的方法可以做到这一点。我究竟做错了什么?有没有更简单的方法来做我所描述的事情?谢谢!
【问题讨论】: