簡體   English   中英

如何使用 selenium 在 python 中逐像素比較兩個圖像文件?

[英]How to compare two image files pixel by pixel in python using selenium?

我想在 python 中使用 selenium 逐像素比較兩個圖像(.png 格式)。 或者我怎么能使用枕頭庫來做到這一點。

我有一個基本圖像,我通過截取網頁的屏幕截圖來獲得比較圖像。 我想比較這兩個圖像並斷言它們是相等的。 我該怎么做。

以下是我嘗試過的:

def assert_images_are_equal(base_image, compare_image):
    with open(base_image, 'rb') as f1, open(compare_image, 'rb') as f2:
        base_image_contents = f1.read()
        compare_image_contents = f2.read()
    assert base_image_contents == compare_image_contents

但這並不總是有效。 我想逐像素比較。 有人可以使用枕頭庫或 PIL 以外的任何其他庫來幫助我嗎? 謝謝。

很難說 2 個圖像是否相同或相似,因為這取決於您對"same""similar"的定義。

  • 您可以制作一個純紅色圖像,將其保存為 PNG,然后再次保存完全相同的圖像,它可能會有所不同,因為 PNG 格式包含圖像 header 中的時間戳,該時間戳可能在兩次保存之間切換到下一秒。

  • 您可以制作一個 8 位深的純紅色 PNG 文件,另一個是 16 位深的文件,您看不到差異,但數據會大不相同。

  • 您可以按照 Motorola 字節順序制作 TIF 文件,並按照 Intel 字節順序制作相同的文件。 在視覺上和計算中,它們將無法區分,但文件將大不相同。

  • 您可以制作一個紅色的 GIF 文件,它看起來與 PNG 文件沒有什么不同,但文件會有所不同。

  • 您可以制作調色板圖像和真彩色圖像,像素將大不相同,但它們看起來相同。

  • 您可以制作一個中間有一個白色矩形的簡單黑色圖像,然后使用一個 JPEG 庫編寫它,它會與使用不同 JPEG 庫甚至是同一庫的不同發行版本編寫的相同圖像不同。

還有很多案例...

一個更有用的注釋是,您可能想查看Perceptual Hashing ,它會告訴您圖像是否看起來非常相似。 一個執行感知散列的庫是ImageMagick ,它在此處此處具有 Python 綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM