In Python 2.7 möchte ich 2 Bilder vergleichen, damit es mir einen ähnlichen Prozentsatz gibt. Wie mache ich das? Bitte zeig mir Schritt für Schritt. Vielen Dank!
Antworten:
0 für die Antwort № 1Eine sehr einfache und schnelle Methode, um dies ohne openCV und jede Bibliothek für Computer Vision zu tun, ist die Normierung der Bildarrays
import numpy as np
picture1 = np.random.rand(100,100)
picture2 = np.random.rand(100,100)
picture1_norm = picture1/np.sqrt(np.sum(picture1**2))
picture2_norm = picture2/np.sqrt(np.sum(picture2**2))
Nachdem Sie beide normed-Bilder (oder Matrizen) definiert haben, können Sie die Multiplikation der zu vergleichenden Bilder einfach summieren:
1) Wenn Sie ähnliche Bilder vergleichen, wird die Summe 1 zurückgegeben:
In[1]: np.sum(picture1_norm**2)
Out[1]: 1.0
2) Wenn sie nicht ähnlich sind, erhalten Sie einen Wert zwischen 0 und 1 (ein Prozentsatz, wenn Sie mit 100 multiplizieren):
In[2]: np.sum(picture2_norm*picture1_norm)
Out[2]: 0.75389941124629822
Bitte beachten Sie dies, wenn Sie farbige Bilder habenSie müssen dies in allen 3 Dimensionen tun oder einfach eine Graustufenversion vergleichen. Ich muss oft große Mengen an Bildern vergleichen, und das ist ein sehr schneller Weg.
0 für die Antwort № 2
Sie können etwas tun wie:
#Dimension tuppel
dim = (100,100,3) #Image dim in y,x,channels
pic1 = np.random.rand(dim)
pic2 = np.random.rand(dim)
#Either use operations that can be performed on np arrays
#or use flatten to make your (100,100,3) Immage a 100*100*3 vector
#Do your computation with 3 channels
#reshape the image if flatten np.reshape(output,(dim))
DONE