2017-07-29 3 views
-4

Ich muss Bilder aus 'Asset' Ordner in Windows 10 kopieren, die Hintergrundbilder automatisch heruntergeladen hat. Einige dieser Bilder werden nie angezeigt und irgendwann gelöscht. Um sicherzustellen, dass ich alle neuen Bilder gesehen habe, bevor sie gelöscht werden, habe ich ein Python-Skript erstellt, das diese Bilder in einen anderen Ordner kopiert. Um effizient zu arbeiten, brauche ich eine Möglichkeit, zwei Bilder zu vergleichen, die nur die neuen kopieren. Alles, was ich tun muss, ist eine Funktion, die zwei Bilder braucht, um sie mit einem einfachen Ansatz zu vergleichen, um sicher zu sein, dass die beiden Bilder nicht visuell identisch sind. Ein einfacher Test wäre, eine Bilddatei zu kopieren und die Kopie und das Original zu vergleichen. In diesem Fall sollte die Funktion erkennen können, dass es sich um dieselben Bilder handelt. Wie kann ich zwei Bilder in Python vergleichen? Ich brauche einen einfachen und effizienten Weg, es zu tun. Einige Antworten, die ich gelesen habe, sind ein bisschen kompliziert.Einfache Möglichkeit, zwei Bilder in Python zu vergleichen

+1

was meinst du mit "vergleichen"? genau Pixelwert oder ähnliche Bilder mit unterschiedlicher Qualität? – minhhn2910

+0

Und die Vergleichsfunktion muss nur "identisch" oder "anders" zurückgeben? – minhhn2910

+0

Ich nehme an, dass die komplizierten Antworten, die Sie gesehen haben, die tatsächlichen Bilder vergleichen. Du musst das nicht wirklich tun. Sie müssen nur testen, ob zwei Dateien exakt die gleichen Bytes enthalten. Und das ist der einfachste Weg, Hashes dieser Dateien zu vergleichen. Sie könnten zum Beispiel MD5 oder SHA-256 aus dem Standard 'hashlib' Modul verwenden. –

Antwort

1

traf ich vor ein ähnliches Problem. Ich habe PIL.Image.tobytes() verwendet, um das Bild in ein Byte-Objekt zu konvertieren, dann hash() für das Byte-Objekt aufzurufen und die Hash-Werte zu vergleichen.

+0

Haben Sie aus Ihrer Erfahrung eine Situation festgestellt, in der dies nicht funktioniert hat? – Amani

+0

Nein, ich benutze nur ein paar Screenshots und vergewissere mich, dass ich keine doppelten Kopien mache. Wenn Sie nicht Milliarden von Bildern verarbeiten, werde ich keine Angst vor Kollisionen haben. – user2341726

+0

@Amani Ich empfehle dringend, dass Sie dafür eine kryptografische Hash-Funktion von 'hashlib' verwenden, anstatt den eingebauten' hash', um die Wahrscheinlichkeit von Hash-Kollisionen zu reduzieren. Und es ist wirklich nicht notwendig, 'PIL.Image.tobytes' zu verwenden, es sei denn, Sie haben die Bilddateien in andere Bilddateiformate konvertiert. Verwendet nur die Hashes der Bytes in den Dateien. –

0

Vergleichen zweier Bilder in Python

Option 1: Verwendung ImageChops Modul, und es enthält eine Reihe von arithmetischen Operationen Bild, genannt Kanaloperationen („zerhackt“). Diese können für verschiedene Zwecke verwendet werden, einschließlich Spezialeffekte, Bildkompositionen, algorithmisches Malen und mehr.

Beispiel:

ImageChops.difference (image1, image2) ⇒ Bild

Gibt den absoluten Wert der Differenz zwischen den beiden Bildern.
out = abs (image1 - image2)

Option 2:

Scikit-image ist ein Bildverarbeitungs Toolbox for SciPy.

Verwenden Sie in scikit-image bitte die compare_ssim bis . Berechnen Sie den mittleren strukturellen Ähnlichkeitsindex zwischen zwei Bildern.

Referenzen:

Python Compare Two Images

Verwandte Themen