简单验证码的识别(matlab实现)
来源:互联网 发布:虚拟视频软件电脑 编辑:程序博客网 时间:2024/05/17 13:39
之前同样的验证码用java识别过,文章为地址为http://blog.csdn.net/q651742112/article/details/76405504
最近在学习matlab,就用它实现一下
验证码样本如下:
验证码采集地址:http://www.quanjing.com/createImg.aspx
识别思路:这个验证码比较规则,数字都是显示在固定的区域,数字也无粘连,实现步骤如下
1.对图像进行分割,分割成一个图像显示一个数字
2.对每个图像进行灰化处理,就是设置一个阈值将他们变成黑白图片
3.建立一个标准的数字图像库
4.将每个被分割的小图片与标准库比较,像素点重合最多的就是该数字
结果图:
matlab实现代码如下:
d=imread('D:\image\VerificationCode\123\12.jpg'); %读取图片%===================标准图片================================s=rand(12,9,10); %建立三维数组存放标准数字的像素点(有点长,关键代码在下面)s(:,:,1)=[1 1 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字0s(:,:,2)= [1 1 1 0 0 0 1 1 1; 1 1 0 0 0 0 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 0 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1;];%数字1 s(:,:,3)=[1 1 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 0 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 1 1 1 1 0 0 1 1; 1 1 1 1 1 0 0 1 1; 1 1 1 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1; 1 0 0 0 1 1 1 1 1; 1 0 0 1 1 1 1 1 1; 0 0 0 0 0 0 0 1 1; 0 0 0 0 0 0 0 1 1];%数字2 s(:,:,4)=[1 1 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 1 1 1 0 0 1 1; 1 1 1 1 1 0 0 1 1; 1 1 1 0 0 0 0 1 1; 1 1 1 0 0 0 0 1 1; 1 1 1 1 1 0 0 1 1; 1 1 1 1 1 0 0 1 1; 0 1 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字3 s(:,:,5)=[1 1 1 1 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 1 0 0 0 1 1 1; 1 1 0 0 0 0 1 1 1; 1 0 0 0 1 0 1 1 1; 0 0 0 1 0 0 1 1 1; 0 0 1 1 0 0 1 1 1; 0 1 0 0 0 0 1 1 1; 0 0 0 0 0 0 0 1 1; 1 0 0 0 0 0 0 1 1; 1 1 1 1 0 0 1 1 1; 1 1 1 1 0 0 1 1 1];%数字4 s(:,:,6)=[1 1 0 0 0 0 0 1 1; 1 0 0 0 0 0 0 1 1; 0 0 0 1 1 1 1 1 1; 0 0 0 1 1 1 1 1 1; 0 0 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 1 1 1 1 1 0 0 1 1; 1 1 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 0 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字5 s(:,:,7)=[ 1 1 0 0 0 0 1 1 1; 1 0 0 0 0 0 1 1 1; 1 0 1 1 1 0 0 1 1; 0 0 1 1 1 1 1 1 1; 0 0 0 0 0 0 1 1 1; 0 0 0 0 0 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字6 s(:,:,8)=[ 0 0 0 0 0 0 0 1 1; 0 0 0 0 0 0 0 1 1; 1 1 1 1 0 0 0 1 1; 1 1 1 1 0 0 1 1 1; 1 1 1 0 0 1 1 1 1; 1 1 1 0 0 1 1 1 1; 1 1 1 0 1 1 1 1 1; 1 1 0 0 1 1 1 1 1; 1 1 0 0 1 1 1 1 1; 1 1 0 0 1 1 1 1 1; 1 1 0 1 1 1 1 1 1; 1 1 0 1 1 1 1 1 1];%数字7 s(:,:,9)=[ 1 1 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 0 0 0 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 0 0 0 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字8 s(:,:,10)=[1 1 0 0 0 1 1 1 1; 1 0 0 0 0 0 1 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 0 1 1; 1 1 0 0 0 0 0 1 1; 0 1 1 1 1 0 0 1 1; 0 0 1 1 1 0 0 1 1; 1 0 0 0 0 0 1 1 1; 1 1 0 0 0 1 1 1 1];%数字9 %==========================标准图片建立结束====================== result=zeros(1,4);%用来存放识别的结果 I=rgb2gray(d); %灰度化原始图片 I(I>140)=255; %设置阈值,大于140为白色,小于140为白色 I(I<140)=0; %==========================识别数字开始=====================for m=1:4 %循环读取验证码里面的四个数字 I1=im2bw(imcrop(I,[-1+m*9 6 8 11]),graythresh(imcrop(I,[-1+m*9 6 8 11])) ); %二值化图片,函数里面包括图片的分割 t=zeros(1,10);%存放与标准图片比较的各个数字的结果 for n=1:10 %循环与0到9数字做比较 T1=I1+s(:,:,n);%与标准相加 for i=1:12 %循环遍历各个像素点 for j=1:9 if(T1(i,j)==0) %等与0表示像素点相等 t(1,n)=t(1,n)+1; %存放结果 end end end end [x,y]=max(t);%获取比较结果数组最大值的坐标 result(1,m)=y-1;%将最接近的数字存在结果数组中endimshow(d);%显示原始图片title({'识别的结果为',result}); %显示结果hold on
注意:该网站下载的验证码格式为gif,可转换为jpg识别
阅读全文
0 0
- 简单验证码的识别(matlab实现)
- 验证码识别 matlab
- 简单验证码的识别
- 识别简单的验证码
- 通过OCR实现对简单验证码的识别技术
- C#实现的简单验证码识别实例
- 一个简单的文件传输验证码识别c/s实现
- Matlab神经网络验证码识别
- Matlab神经网络验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单的bmp验证码识别 (c++)
- C#识别简单的验证码(上)
- C#识别简单的验证码(中)
- JavaScript难点——变量提升和函数提升(三)
- 高德地图定位
- IJKPlayer如何支持https
- Android 中pdfView的使用
- 简单页面+java后台+数据库,实现从页面对数据库的增删改查
- 简单验证码的识别(matlab实现)
- Android WiFi从app到driver详解
- 拓扑排序简介+hdu4857逃生(逆向建图+拓扑排序)
- 十条不错的编程观点
- GitHub学习-----在github上传已有项目---(二)
- HTTP1.0,HTTP1.1,HTTP2.0,SPDY,HTTPS你应该知道的一些事
- Nuget 安装dll 版本
- 摄像头RTSP播放流程报文分析
- 软件安利