工程是一门科学,科学是严谨的。

验证码识别技术研究(2)

 1 /// <summary>
 2         /// 获取主体矩形边界坐标,顺时针
 3         /// </summary>
 4         /// <param name="bmpTg">目标图片</param>
 5         /// <param name="bmpMT">模板图片</param>
 6         /// <returns></returns>
 7         private static Point[] GetTarget(Bitmap bmpTg, Bitmap bmpMT)
 8         {
 9             //主体矩形边界坐标,顺时针
10             Point[] points ={
11                 new Point(0,0),
12                 new Point(0,0),
13                 new Point(0,0),
14                 new Point(0,0),
15                            };
16 
17             int tmpRGB = 0;
18             for (int tgx = 0; tgx < bmpTg.Width - bmpMT.Width; tgx++)
19             {
20                 for (int tgy = 0; tgy < bmpTg.Height - bmpMT.Height; tgy++)
21                 {
22                     bool faild = false;
23                     for (int mtx = 0; mtx < bmpMT.Width; mtx++)
24                     {
25                         for (int mty = 0; mty < bmpMT.Height; mty++)
26                         {
27                             if (bmpMT.GetPixel(mtx, mty).B > 150)
28                                 continue;
29                             tmpRGB = bmpTg.GetPixel(tgx + mtx, tgy + mty).B - bmpMT.GetPixel(mtx, mty).B;
30                             tmpRGB = tmpRGB > 0 ? tmpRGB : tmpRGB * (-1);
31                             if (tmpRGB > 150)
32                             {
33                                 faild = true;
34                                 continue;
35                             }
36                         }
37                     }
38                     if (faild)
39                     {
40                         continue;
41                     }
42                     points[0].X = tgx;
43                     points[0].Y = tgy;
44                     points[1].X = tgx + bmpMT.Width;
45                     points[1].Y = tgy;
46                     points[2].X = tgx;
47                     points[2].Y = tgy + bmpMT.Height;
48                     points[3].X = tgx + bmpMT.Width;
49                     points[3].Y = tgy + bmpMT.Height;
50                     return points;
51                 }
52             }
53             return points;
54         }

 

posted @ 2013-03-07 19:16  大圣的笑  阅读(373)  评论(1编辑  收藏  举报