资源简介
基于matlab的条形码识别,很简单的一个小程序,帮助建立信心

代码片段和文件信息
%%------------条码识别,建立宽度序列--------------%%%
%EAN-13条码字符集特点:A/B子集为白开头黑结尾,C子集为黑开头白结尾
%:一个字符由2个条和2个空构成,故A/B子集就是白黑白黑,C子集就是黑白黑白
function [numberbar1]=barcognition(Iheightwidth)
bar=zeros(1width);
znum = zeros(1width);
onum = zeros(1width);
%%%-----------------少数服从多数校正----------------%%%
for i=1:height
for j=1:width
if(I(ij)==0)
znum(1j)=znum(1j)+1;%统计每一列0的个数
else
onum(1j)=onum(1j)+1;%统计每一列1的个数
end
end
end
%%决定宽度序列的二进制码
for i=1:width
if(znum(1i)>onum(1i))
bar(1i)=0;
else
bar(1i)=1;
end
end
%00011000--010
%1000000001100000--10000100
%1111111001111100--1110110
%1111100111111100--1101110
%11000001111111000-1001110
%1000111100000000--1011000
%1100001111111000--1001110
%11001100011--10101
%001111111110011---0111101(3)
%0011111001111111--0110111(8)
%00000110000011111-0010011(2)
%0011111111100111--0111101(3)
%0011001111111111--0101111(6)
%0011111110011111--0111011(7)
%0011000--010
%%--------------校正条形码宽度序列------------------%%
%%%-------------------奇偶校正---------------------%%%
zcout=0;
ocout=0;
count=1;
bar1=zeros(1width+10);
for i=1:width
if(bar(1i)==0)
if(ocout==1) %删补,让它成偶数
bar1(1count)=1;%补上1个1;
count=count+1;
elseif(ocout>8) %4/5
for i=1:(ocout-8)
count=count-1;
end
end
ocout=0;
zcout=zcout+1;
bar1(1count)=0;%累加0
count=count+1;
end
if(bar(1i)==1)
if(zcout==1) %判断前面有多少个0
bar1(1count)=1;%补上1个1;
count=count+1;
elseif(zcout>8) %多于8个的,删除多余的
for i=1:(ocout-8)
count=count-1;
end
end
zcout=0;
ocout=ocout+1; %字符1计数
bar1(1count)=1;
count=count+1;
end
end
number=count-1;
%%-----------------字符集分类-------------------%%
%开始数据(3010),左侧数据(6)中间符(510101),右侧数据(6),结束符(3)
data =zeros(159); %起始符有3个字符
ldata =0; %白黑白黑
count1=1;
oflag=false;
zflag=false;
stflag=true;
for i=1:number
if(stflag==true)
if(bar1(1i)~=0)%判断是否为0,如果不是0则不开始统计数据
continue;%跳过去
else
stflag = false;
end
end
if(bar1(1i)==0)
if(oflag==true)
count1=count1+1;%1切换到0,表示白到黑,换一种类型
oflag=false;
end
zflag=true;
data(1count1)=data(1count1)+1;
%count=count+1;
elseif(bar1(1i)==1)
if(zflag==true)
count1=count1+1; %换一种类型
zflag=false;
end
oflag=true;
data(1count1)=data(1count1)+1;
%count=count+1;
end
end
%[number] = findchar(a1b1a2b2pos)
max = count1-1;
%pos = 0;
%[numvalid]=findchar(data(11)data(12)data(13)‘head‘);
%左侧数据
lnumber=0;
pos =1;
for i=4:4:24
[lnumlvalid]=findchar(data
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2359350 2007-11-07 10:12 www.NewXing.com\w16.bmp
文件 2359350 2007-11-07 10:11 www.NewXing.com\w7.bmp
文件 2359350 2007-11-07 10:11 www.NewXing.com\w8.bmp
文件 3574 2007-11-12 19:43 www.NewXing.com\barcognition.m
文件 8048 2007-11-12 19:43 www.NewXing.com\codebarreg.m
文件 2409 2007-11-12 19:30 www.NewXing.com\findchar.m
文件 1087 2007-11-08 10:32 www.NewXing.com\ImageEdgePoint.m
文件 4374 2007-11-12 17:40 www.NewXing.com\imagefilter.m
文件 9683 2007-11-10 15:04 www.NewXing.com\point2line.m
文件 1110 2007-11-09 15:27 www.NewXing.com\ThretholdOptimize.m
文件 1282 2007-11-12 19:48 www.NewXing.com\readme.txt
----------- --------- ---------- ----- ----
7109617 11
- 上一篇:matlab 高阶累积量工具箱2015可用
- 下一篇:QQUI设计模板
相关资源
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
评论
共有 条评论