验证码识别技术研究(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 }
!!!转发请注明出处和作者名称。
!!!转发请注明出处和作者名称。
!!!转发请注明出处和作者名称。
重要的事,说三遍。