Python opencv bitwise_xor

Pierre спросил: 28 марта 2018 в 02:40 в: python

Я пытаюсь объединить две картинки, которые являются сегментами из оригинальной. здесь приведен пример двух сегментов:

pic a

pic b

, но при попытке их комбинировать:

img_to_assemble = cv2.bitwise_xor(pic_a,pic_b)

Я получаю следующую ошибку:

Операция не является "массивом op array" (где массивы имеют samesize и type), а не "array op scalar", а не "scalar op array" infunction binary_op

1 ответ

Есть решение
Jeru Luke ответил: 28 марта 2018 в 03:21

Для того, чтобы выполнить то, что вы собираетесь, сначала убедитесь, что ваши изображения имеют одинаковый размер.

И чтобы объединить два изображения, которые я выполнил cv2.bitwise_or()

Код на python:

img_a = cv2.imread("a.png", 1)
img_b = cv2.imread(".png", 1)ret, thresh = cv2.threshold(img_b, 10, 255, cv2.THRESH_BINARY)rows,cols,channels = img_b.shape
roi = img_a[0:rows, 0:cols ]img2gray = cv2.cvtColor(img_b,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)img1_bg = cv2.bitwise_and(roi, roi, mask = mask_inv)
img2_fg = cv2.bitwise_or(img_b, img_b, mask = mask)dst = cv2.add(img1_bg,img2_fg)
img_a[0:rows, 0:cols ] = dst
cv2.imshow('res',img_a)

Вот результат, который я получил в результате: