создать новое изображение маски в градациях серого путем объединения двух других масок в python - PullRequest
0 голосов
/ 14 июля 2020

У меня есть две маски и желаемый результат маски, как показано ниже:

2 исходные маски и желаемый результат

Я хочу создать желаемый результат маски, совмещая первые 2 маски. Однако я хочу создавать белые области только в том случае, если они перекрываются. ЕСЛИ они не перекрываются, тогда область должна оставаться черной. Я не уверен, что делать дальше.

На данный момент я импортировал изображение через cv2 и создал третий массив numpy на основе размеров исходного изображения. Затем я l oop через две маски и установил условие, основанное на том, совпадают ли два значения (255 или 0). Если они есть, я хочу сохранить их или установить в новой маске ...:

necrosis_mask_observer_1 = cv2.imread(mask1, 0)
necrosis_mask_observer_2 = cv2.imread(mask2, 0)

map = np.empty(necrosis_mask_observer_1.shape)

height, width = map.shape

# do something here?

for i in range(width):
     for j in range(height):

         necrosis_mask_observer_1_sum = necrosis_mask_observer_1[j : (j+1), i : (i+1)].sum()
         necrosis_mask_observer_2_sum = necrosis_mask_observer_2[j : (j+1), i : (i+1)].sum()

         if necrosis_mask_observer_1_sum == necrosis_mask_observer_2_sum:

         #do something here?
         else:
              continue 


1 Ответ

0 голосов
/ 14 июля 2020

Вы можете сделать это с помощью побитовой операции и в Python / OpenCV.

Mask1:

enter image description here

Mask2:

enter image description here

import cv2

# read mask 1
mask1 = cv2.imread('mask1.png')

# read mask 2
mask2 = cv2.imread('mask2.png')

# combine mask
mask3 = cv2.bitwise_and(mask1,mask2)

# save result
cv2.imwrite("mask3.png",mask3)

# show result
cv2.imshow('mask3', mask3)
cv2.waitKey(0)

Combined mask:

введите описание изображения здесь

...