我正在使用 OpenCV 和 python 创建一个拼接程序,目前正在很好地拼接图像,现在正在尝试将它们混合在一起。最终目标是使用图形切割来更好地缝合它们,但现在我只是根据发现的单应性重叠图像。
Here is a photo of my current result when stitching two images.
我的目标是确定重叠区域并将其放入一个蒙版中,我可以将其应用于右上图像(即层上的图像),这样我就可以使用任何搅拌器根据距离将其混合opencv 使用或其他算法。
Here is a visual of what I am looking for.
任何帮助表示赞赏。
创建两者的掩码/二进制图像并使用逻辑 AND 怎么样?
您还可以将每个图像的灰度值副本(图像内容全部为 1)转换为每个图像的目标的新副本(以零初始化)。
然后将所有这些目标图像添加起来。
地区有0
那么就会被揭开,1
覆盖和2 to n
意味着覆盖2 to n
images.
使用 numpy 的广播工具时,这非常简单且高效。
import cv2
import numpy as np
#our target area (the black background)
dst = np.zeros((100,100),dtype=np.int)
src1 = dst.copy()
src2 = dst.copy()
src1[50:,50:] = 1 #fake of first translated image (row/col 50-end)
src2[:70,:70] = 1 #fake of second translated image (row/col 0-70)
overlap = src1+src2 #sum of both *element-wise*
cv2.imwrite('a.png', src1*255) #opencv likes it's grey images span from 0-255
cv2.imwrite('b.png', src2*255) #...
cv2.imwrite('c.png', overlap*127) #here vals 0-2, *127 gives (almost) 255 again
np.where(overlap==2) #gives you a mask with all pixels that have value 2
src2 (b)
+
src1 (a)
=
overlap (c)
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)