Это потому, что вы НЕ делаете или инвертируете каждый бит ввода img
, поэтому цвет не соответствует ожидаемому. Вы можете решить эту проблему, ОТПРАВЛЯЯ один раз вход img
, чтобы вторая операция вернула его в ожидаемый цвет, например так:
img2 = img.copy()
cv2.bitwise_not(img, img2)
result = cv2.bitwise_not(img2, black_background, mask=label)
cv2.imwrite("masked.png",result)
Редактировать : В качестве альтернативы вы можете просто добавьте img
к черному изображению соответствующей формы, чтобы цвета никогда не смешивались, например:
black = np.zeros(shape=img.shape, dtype=np.uint8)
result = cv2.add(img, black, black_background, mask=label)
cv2.imwrite("masked2.png", result)