Je l'utilise pour dire si la capture d'écran est maintenant différente de la dernière capture d'écran. J'utilise maintenant
with open('last_screenshot.bmp','rb+') as f: org = f.read() with open('now_screenshot.bmp','rb+') as f: new = f.read() if(org==new): print("The pictures are same")
Y a-t-il un moyen plus rapide de le faire?
3 Réponses :
Vous pouvez utiliser filecmp.cmp (... , shallow = False)
qui est livré avec la bibliothèque standard. Cela ne lira pas tous les fichiers en mémoire, mais lisez-les en morceaux et court-circuiter quand un morceau différent est rencontré. Exemple d'utilisation:
import filecmp if filecmp('last_screenshot.bmp', 'now_screenshot.bmp', shallow=False): print('Files compare equal')
Vous n'irez nulle part en comparant les pixels. Vos options:
Oh ... frérot, merci.Mais je pense que c'est peut-être un peu complexe.Cependant, vos idées me font beaucoup apprendre.
Vous voulez savoir s'ils sont exactement les mêmes? Cela répond-il à votre question?: lien
Non, je pense que c'est la meilleure option!
Utilisez SSIM (indice de similarité structurelle) a > et vérifiez l'image de masque résultante. Jetez un œil à détecter et visualiser les différences entre deux images avec OpenCV Python pour un exemple
@nathancy Ceci est similaire à
PIL.ImageChops.difference
. Mais ce que je veux faire est de savoir s'ils sont différents au lieu de savoir où est différent entre eux. Merci pour la réponse.@jizhihaoSAMA oui SSIM renvoie un masque de différence, vous pouvez donc vérifier le masque pour déterminer s'ils sont différents. S'il y a des pixels blancs sur le masque résultant, les deux images sont différentes. SSIM est une méthode possible qui peut vous aider à déterminer s'ils sont différents et où ils sont différents
Il est possible que la correspondance de modèles soit légèrement plus rapide, mais ` == `semble que ça devrait être bon.