画像比較に関するいくつかの投稿を赤くして、画面からキャプチャした画像を保存してファイルシステムに保存しようとしました。
変換方法を使用して、キャプチャした画像byte[]
を後で使用するために変換しました。
次に、2番目のスクリーンキャプチャと比較する場合は、(に保存されたファイルを)ロードして、同じ方法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