我正在为学习目的做一个图像比较器。
我已经完成了几乎所有的事情,现在我正在改进它。为了检查相似性,我有2个锯齿状多维数组(byte[][,]
),我使用三重for循环访问每个数组的每个元素并存储它们的余数,如下所示:
for (int dimension = 0; dimension < 8; dimension++)
{
Parallel.For(0, 16, mycolumn =>
{
Parallel.For(0, 16, myrow =>
{
Diffs[dimension][mycolumn, myrow] =
(byte)Math.Abs(Image1Bytes[dimension][mycolumn, myrow]
- Image2Bytes[dimension][mycolumn, myrow]);
});
});
}
现在,我想检查每个维度在另一个集合中与另一个维度相等的多少。
我如何比较每个数组中的整个数组(如array1[i][,] == array2[j][,]
)?
我认为有更好的方法来完成这些操作,但我已经设法很快完成了这些操作。
答案 0 :(得分:0)
这是一个比较两个图像的旧线程,这些图像很容易适应您的需求。
答案 1 :(得分:0)
由于Array
支持IStructuralEquatable
接口,因此您可以使用结构比较:
using System.Collections;
. . .
var areEqual = StructuralComparisons.StructuralEqualityComparer.Equals(array1[i], array2[j]);