Это оригинальное изображение:
plt.imshow(new_image)
Этот массив был сгенерирован моделью сегментации c semanti:
print(image_mask)
array([[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]])
Когда изображение отображается в виде изображения с помощью matplotlib, оно добавляет ложные цвета и создает изображение:
plt.imshow(image_mask)
Изменить это в изображение, которое я сделал:
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0]) # REMOVE ALL EXCEPT PEOPLE, == 0
np.place(image_mask_copy,image_mask_copy==15,[255]) # MAKE PEOPLE == 255
new_image_mask = np.expand_dims(image_mask_copy,-1)*np.ones((1,1,3))
plt.imshow(new_image_mask)
Но когда я пытаюсь сделать cv2.bitwise_and
, я получаю исходное изображение снова вместо изображения только с людьми ...:
new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)
И я получаю маску при попытке numpy ..:
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0])
np.place(image_mask_copy,image_mask_copy==15,[1]) #NOTICE 1 NOT 255
new_image = np.multiply(new_image_mask,image)
plt.imshow(new_image)
Я не могу понять, почему это происходит ... Пожалуйста, помогите