【问题标题】:OpenCV Seamless Cloning shift position after finish the process完成该过程后的OpenCV无缝克隆移位位置
【发布时间】:2018-05-29 08:38:38
【问题描述】:

我正在尝试使用无缝克隆将图像混合在一起。 但我注意到,在使用无缝克隆功能后, 我要转移的面具是向上移动。所以我有一个问题 这是无缝克隆功能的正常行为还是错误 关于我的实现。

这里是源照片

这是目的地照片

这是结果照片

【问题讨论】:

  • 您好,您还记得您是否解决了这个问题或问题是什么?我面临着一个类似的问题,即在使用无缝克隆时,我的源照片略微向左移动。有趣的是,我使用的面具似乎对此有影响;使用全白蒙版不会导致偏移。

标签: python-3.x image-processing opencv3.0


【解决方案1】:

我遇到过类似的情况。此外,就像@JoshuaCWebDeveloper 指出的那样,当使用所有一个掩码时,这种转变就消失了。尽管如此,我得到了解决这个问题。我做的是这个。我使用cv2.boundingRect 裁剪了有效掩码(非零子部分)。所以我的源图像和掩码图像被缩小到更小的尺寸,而中心现在是从 boundingRect 输出计算的(因为参考点标记在目标图像上)。这样,错误就解决了/转移了。

【讨论】:

    【解决方案2】:

    (基于 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 )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多