我正在尝试使用无缝克隆将图像混合在一起。 但我注意到在使用无缝克隆功能之后的区域 我要转移的面具向上移动。所以我有一个问题 这是无缝克隆功能的正常行为,还是一个bug 我的实施。
以下是源照片
以下是目标照片
以下是结果照片
答案 0 :(得分:1)
(基于 Fractalic Forieu 发布的答案)您可以在不减小图像尺寸的情况下获得相同的结果。
而不是使用图像中心:
center = (width // 2, height // 2)
poissonImage = cv2.seamlessClone(srcImage, dstImage, maskImage, center)
使用边界矩形的中心:
monoMaskImage = cv2.split(maskImage)[0] # reducing the mask to a monochrome
br = cv2.boundingRect(monoMaskImage) # bounding rect (x,y,width,height)
centerOfBR = (br[0] + br[2] // 2, br[1] + br[3] // 2)
poissonImage = cv2.seamlessClone(srcImage, dstImage, maskImage, centerOfBR )
答案 1 :(得分:0)
我遇到了类似的情况。而且,就像@JoshuaCWebDeveloper指出的那样,当使用所有一个遮罩时,这种偏移消失了。不过,我已经解决了这个问题。我所做的就是这个。我使用cv2.boundingRect
裁剪了有效的蒙版(非零子部分)。因此,我的源图像和蒙版图像被缩小为较小的尺寸,而中心现在是从boundingRect输出中计算出来的(因为在目标图像上标记了参考点)。这样,错误得以解决/转移得以解决。