Python OpenCV的位异或操作

3
我正在尝试合并两张图片,它们是从原始图片中剪切出来的片段。这里有两个片段的示例:
图片a enter image description here
图片b enter image description here
但是当我尝试合并它们时:
img_to_assemble = cv2.bitwise_xor(pic_a,pic_b)

我遇到了以下错误:
操作既不是“数组 op 数组”(其中数组具有相同的大小和类型),也不是“数组 op 标量”,也不是“标量 op 数组”在函数二元运算中。

你需要为其中一张图像创建一个掩码,然后应用 cv2.bitwise_xor - Jeru Luke
请查看此链接 - Jeru Luke
1个回答

3

要执行你想要的操作,首先确保你的图片尺寸相同。

为了合并这两张图片,我使用了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)

以下是我得到的结果:

这里是图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接