博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
验证码识别
阅读量:6956 次
发布时间:2019-06-27

本文共 2279 字,大约阅读时间需要 7 分钟。

1:灰度化

public void TOGray(Bitmap bmp)
{
    for (int i = 0; i < bmp.Height; i++)
       {
           for (int j = 0; j < bmp.Width; j++)
              {
                    Color pixel = bmp.GetPixel(j, i);
                    int tmpValue = (pixel.R * 19595 + pixel.G * 38469 + pixel.B * 7472) >> 16;
                    bmp.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
              }
       }
}
2:?片固定切割
public Bitmap[] ToSplit(Bitmap bmp,int splitNum)
{
    Bitmap[] bmpSplits = new Bitmap[splitNum];
    for(int i=0;i<splitNum;i++)
    {
        Rectangle[] cloneRect = new Rectangle(i*bmp.Width/splitNum,0,bmp.Width/splitNum ,bmp.Height);
        bmpSplits[i] = bmp.Clone(cloneRect, bmp.PixelFormat);
    }
    return bmpSplits;
}
3:二?化
public string ToCode(Bitmap bmp,int dgGrayValue)
{
    Color piexl;
       string code = "";
    for(int y=0;y<bmp.Height;y++)
    {    
        int codeValue = 0;
        for(int x=0;x<bmp.Width;x++)
        {
            piexl = single.GetPixel(x,y);
            if(piexl.R<dgGrayValue)
            {    
                codeValue ++;
            }
        }
        code +=codeValue.ToString()+",";
    }
    return code.SubString(0,code.Lenght-1);
}
4:??
public string ToOCR(Bitmap bmp,int splitNum,int dgGrayValue)
{
    string codeValues = "";
    bmp = TOGray(bmp);
    Bitmap[] bmpSplits = ToSplit(bmp,plitNum);
    string [] codes = new string[splitNum];
    for(int i=0;i<splitNum;i++)
    {
        codes[i] = ToCode(bmpSplits,dgGrayValue);
        codeValues += CodeMatch(codes[i],bmpCodes);
    }
}
5:?取?片
public Bitmap GetBmp(string cookie,string url)
{
    HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
       return new Bitmap(req.GetResponse().GetResponseStream());
}
6:Code匹配
public string CodeMatch(string code,string[] bmpCodes)
{
    int matchValue = 1000000;
    string matchCode = "";
    string [] codeSplit = code.split(',');
    for(int i=0;i<bmpCodes.Lenght;i++)
    {
        string bmpNum = bmpCodes[i].split('|')[0];
        string[] bmpCode = bmpCodes[i].split('|')[1].split(',');
        int value = 0;
        for(int j=0;j<bmpCode.Length;j++)
        {
            value+=Math.Abs(Convert.ToInt32(codeSplit[j])-Convert.ToInt32(bmpCodes[j]));
        }
        if(value<matchValue )
        {
            matchValue = value;
            matchCode = bmpNum;
        }    
    }
    return matchCode;
}
7:学?(建立特征?)
public string [] ToStudy(Bitmap bmp,string nums,int dgGrayValue)
{
    string [] codes = new string[nums.Length];
    bmp = TOGray(bmp);
    Bitmap[] bmpSplits = ToSplit(bmp,nums.Length);
    for(int i=0;i<nums.Length;i++)
    {
        codes[i] = nums[i]+"|" + ToCode(bmpSplits[i],dgGrayValue);
    }    
    return codes;
}

转载于:https://www.cnblogs.com/qingxinliwu/p/3210407.html

你可能感兴趣的文章
POJ1291-并查集/dfs
查看>>
移动办公首选!电商热卖轻薄本高低该怎么选?
查看>>
[译] RNN 循环神经网络系列 1:基本 RNN 与 CHAR-RNN
查看>>
Android技能树 — PopupWindow小结
查看>>
如何在create-react-app项目中使用vw实现手淘vw移动端适配布局
查看>>
Wormhole燃烧地址到底有多安全
查看>>
Web探索之旅 | 第三部分第三课:协议
查看>>
20个优秀手机界面扁平化设计,让你一秒看懂扁平化
查看>>
从百度的PPT文化看程序员晋升
查看>>
Python测试登录功能
查看>>
mysql 创建高性能索引
查看>>
babel插件入门-AST(抽象语法树)
查看>>
分布式ID
查看>>
原声写法操作table
查看>>
10 分钟内快速构建能够承载海量数据的 nginx 日志分析与报警平台
查看>>
完全二叉树实现优先队列与堆排序
查看>>
启动时间知多少?8款音视频类应用测评报告分析
查看>>
公司来了个“奇葩”的程序员
查看>>
ubuntu 16.04下docker的安装
查看>>
web页面渲染(一)
查看>>