Я написал несколько сообщений о сравнении изображений и попытался сохранить изображение, снятое с экрана, а затем сохранить его в файловой системе.
Я использовал методы преобразования, чтобы преобразовать захваченное изображение в byte[]
для последующего использования.
Затем, когда я хочу сравнить его со вторым снимком экрана, я загружаю (файл, сохраненный в byte[]
) и сравниваю его с новым снимком, который таким же образом преобразован в byte[]
.
Теперь, когда в памяти есть как 1-й захват, так и 2-й захват, было несколько способов провести сравнение, я хотел сначала поделиться этим сообщением с другими, ищущими тот же ответ, и чтобы я знал:
Что быстрее и как контролировать процент сходства?
Если вариант иметь процент (равенства) противоречит самому быстрому способу вычисления... Я могу игнорировать его, хотя я мог бы использовать его в других проектах, когда проблемы с производительностью нет, и в соответствии с его потребностями
Это коды, которые я знаю, доступные для выполнения задачи
Я хотел обсудить с вами идеи, которые быстрее, и есть ли лучший способ вообще с процентом равенства и без него. Спасибо.
static bool ByteArrayCompare(byte[] a1, byte[] a2)
{
IStructuralEquatable eqa1 = a1;
return eqa1.Equals(a2, StructuralComparisons.StructuralEqualityComparer);
}
vs
public enum CompareResult
{
ciCompareOk,
ciPixelMismatch,
ciSizeMismatch
};
CompareResult cr = CompareResult.ciCompareOk;
byte[] hash1 = shaM.ComputeHash(btImage1);
byte[] hash2 = shaM.ComputeHash(btImage2);
//Compare the hash values
for (int i = 0; i < hash1.Length && i < hash2.Length
&& cr == CompareResult.ciCompareOk; i++)
{
if (hash1[i] != hash2[i])
cr = CompareResult.ciPixelMismatch;
}
последний использует System.Security.Cryptography