【发布时间】:2019-06-10 08:38:15
【问题描述】:
我正在尝试选择非黑色像素,然后将它们着色为黑色,将黑色像素着色为白色。我使用了 Stack Overflow 上提供的 solution,但到目前为止它对我不起作用。
import numpy as np
import matplotlib.pyplot as plt
image = plt.imread('Perforated_carbon/faltu.png')
plt.imshow(image)
plt.show()
image_copy = image.copy()
black_pixels_mask = np.all(image == [0, 0, 0], axis=-1)
non_black_pixels_mask = ~black_pixels_mask
# or non_black_pixels_mask = np.any(image != [0, 0, 0], axis=-1)
image_copy[black_pixels_mask] = [255, 255, 255]
image_copy[non_black_pixels_mask] = [0, 0, 0]
plt.imshow(image_copy)
plt.show()
这是我目前得到的图像
我最想要的是这个
补充资料:
>>> image.shape
(256, 192, 3)
>>> image.dtype
dtype('float32')
>>> import matplotlib; print(matplotlib.__version__)
2.0.0
【问题讨论】:
-
black_pixels_mask的大小是否符合您的预期?它有 0 和 1 吗? -
为什么不直接使用
black_pixels_mask作为输出图像?也许它需要转换为不同的类型,但我看不出你做这个索引的意义...... -
@CrisLuengo 是的,
plt.imshow(black_pixels_mask, cmap='Greys_r')可以,IIUC。
标签: python numpy matplotlib image-processing