6

Pracuję nad projektem, w którym w jednym punkcie muszę porównać dwa obrazy.może ktoś mi pomóc z metodą, aby to zrobić..Tak sposób obrazy są zrzuty ekranu oprogramowanie. chciałem sprawdzić, czy oba obrazy są identyczne, w tym cyfry i litery wyświetlane na obrazku (zrzut ekranu oprogramowania) ..kod Pythona, aby porównać obrazy w python

+0

Co masz na myśli, mówiąc: porównaj? Czy chcesz sprawdzić, czy są identyczne? Szukasz informacji na temat tego, jak to zrobić w Pythonie lub jak porównać obrazy? –

+0

tak chciałem porównać, czy są identyczne, w tym numery/litery wyświetlane w oprogramowaniu – stallion

Odpowiedz

6

Są następujące sposoby na prawidłowe porównanie.

  • Pierwszy to Root Mean-Square Różnica #

Aby uzyskać miarę jak podobne są dwa zdjęcia, można obliczyć średniego pierwiastka kwadratowego (RMS) Wartość różnica między obrazami. Jeśli obrazy są dokładnie takie same, ta wartość wynosi zero. Następująca funkcja wykorzystuje funkcję różnicy, a następnie oblicza wartość RMS z histogramu uzyskanego obrazu.

# Example: File: imagediff.py 

import ImageChops 
import math, operator 

def rmsdiff(im1, im2): 
    "Calculate the root-mean-square difference between two images" 

    h = ImageChops.difference(im1, im2).histogram() 

    # calculate rms 
    return math.sqrt(reduce(operator.add, 
     map(lambda h, i: h*(i**2), h, range(256)) 
    )/(float(im1.size[0]) * im1.size[1])) 
  • Innym jest Dokładne porównanie #

Najszybszym sposobem, aby ustalić, czy dwa obrazy mają dokładnie te same treści jest, aby uzyskać różnicę między dwoma obrazami, a następnie obliczyć obwiedni w polu niezerowych regionów na tym obrazie. Jeśli obrazy są identyczne, wszystkie piksele na obrazie różnicy są zerowe, a funkcja obwiedni zwraca Brak.

import ImageChops 

def equal(im1, im2): 
    return ImageChops.difference(im1, im2).getbbox() is None 
1

Nie mogę podać gotowej odpowiedzi, ale wskażę ci (I pomyślcie) właściwy kierunek. Prostym sposobem porównywania dwóch obrazów jest utworzenie skrótu ich binarnych reprezentacji, a następnie sprawdzenie, czy te skróty są takie same. Jednym z problemów jest funkcja hash, której chcesz użyć i musisz szukać takiej, która ma niskie szanse na kolizje, a druga jest taka, że ​​plik obrazu prawdopodobnie zawiera metadane dołączone do oryginalnych informacji binarnych, więc będziesz musiał sprawdzić jak odciąć te metadane, aby porównać obrazy tylko z ich binarnymi informacjami. Ponadto, nie wiem na pewno, ale prawdopodobnie binarna reprezentacja obrazu zakodowanego w jpg różni się od obrazu zakodowanego w png, więc powinieneś być tego świadomy.

6

jestem utrzymanie biblioteki Pythona o nazwie pyssim, który wykorzystuje metodę Structured Similarity (SSIM) porównać dwa obrazy.

Nie ma powiązań z pythona, ale program perceptualdiff jest również świetny przy porównywaniu dwóch obrazów - i dość szybko.

+0

, czy pyssim to rodzaj rozmytego porównania? co jeśli na obrazku były pola tekstu, pozycje pól są takie same dla innego obrazu, ale tekst jest nieco inny? Jaki wynik by powrócił? czy bierze pod uwagę tylko struktury? – user299709

+0

Jeśli tekst jest inny, będzie miał niższy wynik. – jterrace

Powiązane problemy