qq验证码识别

这段代码展示了如何在C++中实现QQ验证码识别的过程,包括图片加载、像素处理、旋转操作和字母定位。通过扫描和设置像素值来识别验证码,并使用旋转函数对图像进行角度调整,以提高识别准确性。
摘要由CSDN通过智能技术生成

void CtestprintDlg::workpic(CString filename)
{
CImage m_image;
m_image.Load(filename);


int nBPP_image;
nBPP_image=m_image.GetBPP();
int arr[130][53]={0};


int first = 1;


int px,py;
//往左扫描
for (int y=0;y<53;y++)
{
for (int x=0;x<130;x++)
{
bool bEqual;


byte r[8],g[8],b[8],avg[8];


if (nBPP_image==24)
{
{//向→看
BYTE* target =(BYTE*)m_image.GetPixelAddress(x,y);r[0] = *(target+0); g[0] = *(target+1); b[0] = *(target+2); 
avg[0] = (r[0] + g[0] + b[0]) /3;
if (avg[0]>200)
{
m_image.SetPixelRGB(x,y,255,255,255);
arr[x][y]=0;
} else
{

if(first == 1)
{
px = x;
py = y+3;
//m_image.SetPixelRGB(x,y,255,0,255);
first = 2;
}

m_image.SetPixelRGB(x,y,0,0,0);
arr[x][y]=1;
}


}
}
}
}


GetLetter(m_image,px,py);







// N_image.Save("N.jpg");




m_image.Save(_T("testprintDlg.bmp"));
}




void CtestprintDlg::Rotate(CImage &myImage1 )  
    {  
        //程序编制:李立宗  lilizong@gmail.com  
        //2012-8-5  
CImage myImage2;
        if(myImage1.IsNull())  
           return ;  
        if(myImage2.IsNull()){  
            myImage2.Create(myImage1.GetWidth(),myImage1.GetHeight(),24,0);  
        }  
        COLORREF pixel;   
        int maxY = myImage1.GetHeight();  
        int maxX=myImage1.GetWidth();  
        byte* pRealData;  
        byte* pRealData2;  
        pRealData=(byte*)myImage1.GetBits();  
        pRealData2=(byte*)myImage2.GetBits();  
        int pit=myImage1.GetPitch();  
        int pit2=myImage2.GetPitch();  
        int bitCount=myImage1.GetBPP()/8;  
        int bitCount2=myImage2.GetBPP()/8;  
        int tempR,tempG,tempB;  
        float cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值