【问题标题】:Python + PIL screenshot comparingPython + PIL 截图对比
【发布时间】:2011-03-07 19:43:08
【问题描述】:

我制作了一个程序来比较 PIL 抓取的屏幕截图,存储在一个表格中,我使用ImageChops.difference 来比较它们。

该程序运行良好,但存在一个问题。完全相同的屏幕截图(例如,如果您以 1 秒的间隔截取两个桌面屏幕截图)没有完全相同的像素。我通过使用带有大量缩放的 Photoshop 发现了这一点。所以在某些情况下,程序会返回一些错误的值。

有什么方法可以从类似的屏幕截图中获得完全相同的像素,这样我就不必使用阈值了?或者任何其他方式来成功实现我的数据库的高比较准确性?

【问题讨论】:

    标签: python compare screenshot python-imaging-library


    【解决方案1】:

    我不确定您的哪些像素不同,也不确定您正在寻找哪些差异,因此提供帮助有点困难。

    当然,关闭所有动画和桌面效果应该有助于获得一致的屏幕截图。我确信可以编写一个工具来做到这一点。

    此外,我相信您也知道,将屏幕截图保存为 JPEG(或任何有损格式)也是可行的。

    还有一个名为 pdiff 的实用程序,它根据感知差异而不是基于直接值的差异来比较图像。它可能会对您有所帮助,具体取决于您实际想要实现的目标。

    【讨论】:

    • 感谢您的回答。该程序从网络上截取一些带有文本的图像,并使用 PIL 以灰度 bmp(非有损)格式保存它们。当我用同样的方法对同一张图片进行相同的截图时,它看起来是一样的,但是当我放大很多时,像素是不同的。
    • 您是否在系统上使用 ClearType (Windows) 或某种字体可读性改进方法?
    • 是的,我正在使用 ClearType。我相信这是因为 PIL 造成的,在 ImageGrab 或 ImageCrop 的某处对屏幕截图的处理方式不同......我不能肯定地说。
    • ClearType 确实会弄乱像素,但如果您的屏幕是静态的,它应该是安全的。如果您不信任您的屏幕抓取器,请使用 PrtSc 抓取一些图像并比较它们,以查看问题所在。如果有区别,请使用 PIL 邮件列表进行处理。
    【解决方案2】:

    卡皮斯

    据我所知,Open CV 是图像处理的最佳库。虽然我用 C 编码。但是它也有一个 pythonic 包装器。 http://opencv.willowgarage.com/documentation/python/index.html 试一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 2011-02-05
      • 2017-05-10
      • 1970-01-01
      • 2011-05-07
      • 2023-03-30
      • 2015-11-29
      • 1970-01-01
      相关资源
      最近更新 更多