[英]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.