【问题标题】:Image Itertaion is slow图像迭代很慢
【发布时间】:2021-01-04 15:15:29
【问题描述】:

我有图像列表和模板,需要比较模板与哪个图像匹配。我也实现了多处理,它加快了程序,但如果列表的大小很大,则需要几秒钟才能产生结果。即使列表大小较大,我如何才能固定程序以产生 ns 的结果。

def compare_images(original, image_to_compare):
    (score, diff) = ssim(original, image_to_compare, full=True)
    diff = (diff * 255).astype("uint8")
    score= score*100
    print("SSIM: {}".format(score))
    
    if(score > 90):
        return True
    else:
        return False



f = partial(compare_images, template)
with Pool() as p:
    result= p.map(f, converted_screens)
    print(result)

其中 template 是我必须找到的图像,converted_screens 是我正在进行比较的列表,两者都是全局变量,并使用 cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 转换为灰色空间。

【问题讨论】:

    标签: python multiprocessing


    【解决方案1】:

    这更像是要考虑的事情的清单。

    首先,您为函数ssim() 使用了哪些软件包。如果市场上有更快的竞争,这是我首先会看到的。
    例如如果您只需要 90% 与您的模板相似的照片,则检查器应停止工作并在不可能时立即返回 False,即有超过 10% 的差异。

    其次,你可以看看this article关于Ray,据说比multiprocessing快很多。

    另外一个想法,如果您真的关心速度上的微小提升,那么在每次迭代完成时,打印到控制台都需要相当长的时间。如果您不需要所有结果,请考虑只返回最好的 90% 左右。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-03
      • 2017-09-28
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2018-05-12
      • 2019-11-24
      相关资源
      最近更新 更多