我正在使用OpenCV拼接多个图像。它开始起作用了,但我有一个问题。在cv2.warpPerspective
之后,图像有一个“软”边界,这意味着计算的遮罩太大了一个像素。在
我的代码:
# apply a perspective warp to stitch the images
# together
result = cv2.warpPerspective(imageA, H,
(imageA.shape[1] + imageB.shape[1], imageA.shape[0]))
# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(result,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 0, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
resizedB = np.zeros((result.shape[0],result.shape[1],3), np.uint8)
resizedB[0:imageB.shape[0], 0:imageB.shape[1]] = imageB
difference = cv2.bitwise_or(resizedB,result, mask=mask_inv)
result = cv2.add(result,difference)
cv2.imwrite('result .jpg', result)
我不得不使用cv2.bitwise_or
,因为使用cv2.add
添加两个图像会使它太亮,从而在连接处形成一条几乎是黑色的线。
你知道怎么解决这个问题吗?也许有一种方法可以修改遮罩,使其变小1像素?在
最后,我用几个逻辑运算的组合解决了这个问题。解决方案如下:
相关问题 更多 >
编程相关推荐