• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像中の検索について教えてください)

画像検索の方法について

このQ&Aのポイント
  • C#を使用して画像の解析を試みていますが、行き詰まっています。
  • 画像をハッシュに変換して、ハッシュ値から検索する方法がわかりません。
  • どなたかご存知の方がいらっしゃいましたら、ご教授いただけませんか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。  出来ますが、色彩を集める際にGetPixel()を使用すると重たくなりすぎますので、以下のクラスを使用する必要があります。  http://msdn.microsoft.com/ja-jp/library/system.drawing.imaging.bitmapdata(VS.100).aspx  MD5クラスの使用法  http://dobon.net/vb/dotnet/string/md5.html  dest.bmpに640x480を、source.bmpに100x50を指定してみてください。  改善の余地もあるかとは思いますが、以下参考程度に。 private byte[] MakeMD5From(Bitmap from) { System.Drawing.Imaging.BitmapData bmData = from.LockBits(new Rectangle(0, 0, from.Width, from.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb); byte[] images = new byte[bmData.Stride * bmData.Height]; System.Runtime.InteropServices.Marshal.Copy(bmData.Scan0, images, 0, images.Length); from.UnlockBits(bmData); System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); return md5.ComputeHash(images); } private bool CompareMD5(byte[] a, byte[] b) { for (int i = 0; i < a.Length; ++i) { if (a[i] != b[i]) return false; } return true; } private void button1_Click(object sender, EventArgs e) { Bitmap bmDest = new Bitmap("dest.bmp"); Bitmap bmSource = new Bitmap("source.bmp"); Bitmap bmWork = new Bitmap(bmSource.Width, bmSource.Height); Rectangle rc = new Rectangle(0, 0, bmSource.Width, bmSource.Height); byte[] md5src = this.MakeMD5From(bmSource); for (int y = 0; y < bmDest.Height - bmSource.Height; ++y) { for (int x = 0; x < bmDest.Width - bmSource.Width; ++x) { Graphics gfx = Graphics.FromImage(bmWork); gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; gfx.DrawImage(bmDest, rc, new Rectangle(x, y, bmSource.Width, bmSource.Height), GraphicsUnit.Pixel); gfx.Dispose(); byte[] md5dest = this.MakeMD5From(bmWork); if (this.CompareMD5(md5dest, md5src) == false) continue; MessageBox.Show("発見", "[x = " + x.ToString() + "][y = " + y.ToString() + "]"); return; } } }

neo_ts
質問者

お礼

machongola 様 直接コードまでいただき大変おどろいております。 ちょっと難しい印象を受けましたが、一つ一つ噛み砕いて 理解していきたいと思っております。 大変、参考になる資料ありがとうございました。

関連するQ&A