比较图像

本文关键字:图像 比较 | 更新日期: 2023-09-27 17:59:31

我在两个不同的对象中有完全相同的图像。它们是bmp,当我将它们与.Equals进行比较时,它返回false。

这有原因吗?如果有,应该如何比较图像?

比较图像

如果它们是两个不同的Image对象,分别加载,它们将具有不同的引用。

ImageObject继承.Equals,而不是覆盖它(请参阅MSDN上的Image)。

由于.Equals执行引用相等,因此如果引用指向不同的Image对象,则返回false。

要查看图像是否相同,必须逐像素/逐字节进行比较。

Equals:

确定指定的Object是否等于当前Object。

由于这两个实例不同的object实例,因此false是正确的结果。

为了真正比较图像,您需要逐个检查AFAIK。

.Equals()检查它们是否是对同一对象的引用。如果你想比较它们,你必须手动进行,比较所有像素的大小或颜色。

默认情况下。Equals(object)compres引用相等。这意味着,即使你两次加载同一个图像,它们是不同的实例这一简单事实意味着它们不会相等。

Equals方法,正如您所称,它是比较引用(也称为指针)的地址,并且由于您的对象可能被加载到两个不同的内存位置,因此结果为false。

您应该编写自己的方法来比较更高级别的结构,例如,您首先比较高度和宽度,如果高度和宽度相同,然后比较像素,Image类可能无论如何都会对您有所帮助,但对象类中提供了Equals,因此对您没有帮助。

。Equals通常比较对象实例。您需要比较对象"内容"。

查看此帖子:http://www.dreamincode.net/code/snippet2859.htm

或者这样:http://www.c-sharpcorner.com/UploadFile/prathore/ImageComparison01022009050404AM/ImageComparison.aspx