Numpy: самый быстрый и простой способ конвертировать черный пиксель в белый - PullRequest
0 голосов
/ 17 октября 2019

У меня есть цветное изображение RGB mask_color, форма (4,4,3). Как я могу быстро преобразовать все черные пиксели [0,0,0] в белые [255,255,255], без использования каких-либо петель, без дополнительных пакетов, предпочтительно с нуля?

mask_color = np.array([
 [
  [0,0,0],
  [128,0,255],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [0,0,0],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [50,128,0],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [0,0,0],
  [245,108,60],
  [0,0,0]
 ]
])

plt.imshow(mask_color)
plt.show()

изображение с черным фоном

white_bg_mask_color = # do something
plt.imshow(white_bg_mask_color)
plt.show()

изображение на белом фоне

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вы можете использовать np.where:

>>> np.where(mask_color.any(-1,keepdims=True),mask_color,255)
array([[[255, 255, 255],
        [128,   0, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [ 50, 128,   0],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [245, 108,  60],
        [255, 255, 255]]])
0 голосов
/ 17 октября 2019

вы также можете сделать это, используя логическое индексирование, как показано ниже

mask_color[np.all(mask_color==0, axis=2)] = 255
mask_color
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...