Привет. Я пытаюсь получить регионы из набора изображений. Я использовал операцию bitwise_and для изображения и масок для получения областей, но это приводит к изменению яркости полученного изображения. Итак, я хочу извлечь эти области из изображения пиксель за пикселем и соединить их в другое пустое изображение.
Обновление: В настоящее время у меня есть три области в масках (белая, серая и черная). Я хочу иметь возможность выбрать регион (скажем, белый или серый), а затем для этого конкретного региона он должен извлечь изображение для соответствующего региона.
for im in glob.glob(path_to_images):
image = cv2.imread(im)
canny = auto_canny(image)
image[(image< 50)] = 0
gray_mask = image[(image>= 50) & (image< 100)] = 100
white_mask = image[image> 110] = 255
if(white_mask):
res = cv2.bitwise_and(img, img, mask = white_mask )
white_inv= cv2.bitwise_not(white_mask)
alt_ = cv2.bitwise_and(img_1, img_1, mask = white_inv)
result = cv2.add(alt_, res)
elif(gray_mask):
res = cv2.bitwise_and(img, img, mask = gray_mask )
gray_inv= cv2.bitwise_not(gray_mask)
alt_ = cv2.bitwise_and(img_1, img_1, mask = gray_inv)
result = cv2.add(alt_, res)
cv2.imshow("result",result)
cv2.waitKey(0)
Я пробовал это, но извлеченные области приводит кувеличенная яркость.
Обновление 2: Я пробовал решение, данное @ZdaR, но получил следующую ошибку: "ошибка: (-215) (mtype == 0 || mtype ==1) && _mask.sameSize (* psrc1) в функции cv :: binary_op "
Ссылка на примеры изображений
Ожидаемый результат
Мой вывод
Маски