Comment comparer les objets Image avec C # .NET?
Peut-on comparer les deux Image
objets avec C#? Par exemple, vérifiez si elles sont égales, ou même mieux de vérifier la similitude de leurs pixels?
si possible, comment?
source d'informationauteur Louis Rhys
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un ensemble d'outils appelé TestApiqui est un open-source de la bibliothèque à l'aide de tests unitaires. L'un de ces API est appelée Vérification visuelle de l'APIet c'est exactement ce dont vous avez besoin - il permet de comparer deux images et vous dire s'ils sont égaux:
Le plus simple endroit pour commencer serait dimensions. Si les dimensions ne sont pas les mêmes, vous pouvez être en mesure de les déclarer faux.
Si vous avez besoin d'aller à travers eux, pixel par pixel, vous aurez besoin de deux boucles for. Quelque chose le long de ces lignes:
Pseudo-code (les fonctions existent dans C#, bien que je ne me souviens pas pour le moment) et très simpliste, mais est la façon dont vous voulez effectuer une base de pixel-à-pixel case.
Noter, cependant, pour que la boucle pour travailler les images doivent être de mêmes dimensions. Si ils ne le sont pas, vous êtes susceptible d'avoir des exceptions si vous essayez un échantillon d'un pixel à l'extérieur de la plus petite zone. Elle aussi ne sera pas terriblement rapide pour comparer les pixels, de sorte que vous voudrez peut-être trouver un autre moyen que de les jeter possible les doublons en premier.
Edit: je ne suis pas sûr de la façon de faire cela sur une
Image
mais c'est assez simple pourBitmap
s. Il n'y a pas une manière visible de l'obtention de pixel de l'Image des données en dehors de la classe. Il semble que les Bitmaps hériter d'Images, bien que, si cela peut encore travailler. Étant donné que les Images sont une classe abstraite pour les deux images et des Métafichiers, ils ne peuvent pas avoir un simple internes liste des pixels.J'ai eu la même question ce jour-là, ma solution est de prendre image1 et image2 converti à 256x256 ou 128x128 traduits ET générer ensuite une image3 avec la différence entre eux, et d'analyser ensuite image3 de vérifier les différences et en retournant le montant de la différence, j'ai découvert que la réduction du montant de la différence en%, plus égalitaire, les images et sont plus susceptibles d'être de l'égalité. De cette façon, vous pouvez identifier si les images sont égaux, même s'ils sont de taille différente. voici le code.
Testé ici avec plus de 900 images et il fonctionne comme un charme x)