web-dev-qa-db-fra.com

Comment vérifier la similitude de deux images ayant une pixelisation différente

J'utilise un code python pour vérifier la similitude des photos des profils d'utilisateurs Quora et Twitter, mais je n'obtiens pas de résultat positif lorsque les images sont les mêmes.

Voici le code pour comparer les deux images:

path_photo_quora= "/home/yousuf/Desktop/quora_photo.jpg"
path_photo_Twitter="/home/yousuf/Desktop/Twitter_photo.jpeg"
if open(path_photo_quora,"rb").read() == open(path_photo_Twitter,"rb").read():
     print('photos profile are identical')

malgré les images identiques, la console n'imprime pas "le profil des photos est identique", que faire?

6
Youcef

Vous pouvez utiliser la bibliothèque imagehash pour comparer des images similaires.

from PIL import Image
import imagehash
hash0 = imagehash.average_hash(Image.open('quora_photo.jpg')) 
hash1 = imagehash.average_hash(Image.open('Twitter_photo.jpeg')) 
cutoff = 5

if hash0 - hash1 < cutoff:
  print('images are similar')
else:
  print('images are not similar')

Étant donné que les images ne sont pas exactement les mêmes, il y aura des différences. Mais imagehash fonctionnera même si les images sont redimensionnées, compressées, différents formats de fichier ou avec un contraste ou des couleurs ajustés.

Le hachage (ou l'empreinte digitale, vraiment) est dérivé d'une miniature monochrome 8x8 de l'image. Mais même avec un échantillon aussi réduit, les comparaisons de similitude donnent des résultats assez précis. Ajustez le seuil pour trouver un équilibre acceptable entre les faux positifs et les faux négatifs.

2
Håken Lid

Les deux images ne sont PAS les mêmes - seule la chose imagée. Les images sont évidemment de taille différente, comme vous le constatez vous-même. Une comparaison doit donc échouer.

Vous devrez utiliser une sorte de vérification de similitude. La première étape consiste à mettre à l'échelle la plus petite image à celle de la plus grande. Ensuite, vous devez utiliser un moyen de détecter et de définir la similitude. Il existe différentes manières et méthodes pour cela, et toute combinaison d'entre elles peut être valide.

Par exemple, voir Vérification de la similitude des images avec OpenCV

1
planetmaker