|
分類:[C#]
C#を使ってテンプレートマッチングの練習をしております。
2つの同じ画像を比較しようとして下のようなソースを書いたのですが、
原型の色と異なるようでfalseが返ってきます。
おそらくDrawImageメソッドを使うことによって、元の画像から変色してしまっているからだと思います。
原形のまま変色せずに他のBitmapへコピーすることはできるのでしょうか。
public void CheckImage()
{
Bitmap bitmapIcon = SystemIcons.Hand.ToBitmap();
Bitmap bitmapBig = new Bitmap(bitmapIcon.Width * 2, bitmapIcon.Height * 2);
Graphics graphics = Graphics.FromImage(bitmapBig);
graphics.DrawImage(bitmapIcon, 0,0);
MessageBox.Show(IsEqualBitmap(bitmapBig, SystemIcons.Hand.ToBitmap(), 0,0).ToString());
}
public bool IsEqualBitmap(Bitmap bitmapTarget, Bitmap bitmapImage, int nTargetX, int nTargetY)
{
if((nTargetX + bitmapTarget.Width) > bitmapImage.Width)
{
return false;
}
if((nTargetY + bitmapTarget.Height) > bitmapImage.Height)
{
return false;
}
for (int nY = 0; nY < bitmapTarget.Height; nY++)
{
for (int nX = 0; nX < bitmapTarget.Width; nX++)
{
Color colorTarget = bitmapTarget.GetPixel(nX, nY);
Color colorImage = bitmapImage.GetPixel(nTargetX + nX, nTargetY + nY);
if (colorTarget != colorImage)
{
return false;
}
}
}
return true;
}
|