【问题标题】:Automatically translate images to have same position for an object自动将图像转换为对象的相同位置
【发布时间】:2020-09-17 19:57:03
【问题描述】:

假设您有各种图像,如下所示。

Python OpenCV 中是否有一个函数可以自动水平平移图像,以使主要对象的位置与参考图像(第一张图像)上的位置大致相同?

用数学的话来说,就是计算:

score[x] = image_correlation(ref_image, image2.translate_horizontally(x))

对于所有可能的x in range(-200,200)(如果图像宽度为 200)

并选择最大化此分数的x。

在从头开始重做之前,OpenCV 中是否已经存在此功能?

(使用图像质量中心?涉及 OpenCV 中已经存在的 image_correlation 函数的其他技术?还是 Scale Invariant Feature Transform 技术?)


例子:

参考图片:

图像2:

--> 自动翻译为 -->

【问题讨论】:

    标签: python opencv computer-vision signal-processing sift


    【解决方案1】:

    我终于很容易解决了:您必须提供背景参考(在我的情况下只有绿色背景)ref.png。

    然后背景减法+质心效果很好:

    import cv2
    import scipy.ndimage as ndi 
    
    backSub = cv2.createBackgroundSubtractorMOG2()  # or backSub = cv.createBackgroundSubtractorKNN()
    
    frame = cv2.imread('ref.png')
    backSub.apply(frame)
    frame = cv2.imread('1.png')
    mask = backSub.apply(frame)
    cv2.imwrite('mask.png', mask)
    print(ndi.center_of_mass(mask))
    

    结果:(63.6349484521314, 164.158143799214)

    然后我们可以比较连续帧的这个质心并进行适当的平移。

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 2021-09-20
      • 1970-01-01
      • 2010-12-04
      • 2011-06-19
      • 2015-06-28
      • 2014-05-10
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多