En python 2.7, je veux comparer 2 images pour qu'il me renvoie un pourcentage de similarité, comment faire cela? montrez-moi s'il vous plaît, étape par étape. Merci!
Réponses:
0 pour la réponse № 1Une approche très simple et rapide pour ce faire sans openCV et toute bibliothèque de vision par ordinateur consiste à normaliser les tableaux d'images en
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))
Après avoir défini les deux images normées (ou matrices), vous pouvez simplement additionner la multiplication des images que vous souhaitez comparer:
1) Si vous comparez des images similaires, la somme retournera 1:
In[1]: np.sum(picture1_norm**2)
Out[1]: 1.0
2) Si elles ne sont pas similaires, vous obtiendrez une valeur comprise entre 0 et 1 (un pourcentage si vous multipliez par 100):
In[2]: np.sum(picture2_norm*picture1_norm)
Out[2]: 0.75389941124629822
Veuillez noter que si vous avez des images coloréesvous devez le faire dans les 3 dimensions ou simplement comparer une version en niveaux de gris. Je dois souvent comparer d’énormes quantités d’images et c’est un moyen très rapide de le faire.
0 pour la réponse № 2
Vous pouvez faire quelque chose comme:
#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