资源简介
基于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设计模板
相关资源
- matlab 高阶累积量工具箱2015可用
- 基于matlab的数字语音信号的采集及频
- IIR 数字低通滤波器(用MATLAB GUI设计
- 自动控制理论及matlab实现课后答案
- matlab中文手册
- 基于PCA算法的人脸识别matlab程序
- 神经网络的手写数字识别USPS数据集
- Matlab R2015b for Mac破解文件
- matlab实现梯度倒数加权滤波
- 链路调度matlab仿真程序
- MATLAB智能算法30个案例分析第2版源代
- 盒维计算的matlab 程序
- 基于matlab的斜抛运动轨迹分析(考虑
- mimo ofdm的MATLAB仿真
- 掺铒光纤放大器数值计算matlab.zip
- 车牌识别Matlab代码61833
- 基于MATLAB的车牌识别代码
- 802.11a_simulation with matlab
- 图像处理基础算法源代码MATLAB集合
- 图片二维小波变换的分解与重构_mat
- 13位巴克码产生波形及其模糊图 matl
- matlab量化投资基础知识
- 人工神经网络MATLAB程序代码
- MATLAB实现曼切斯特编码,密勒编码,
- matlab海明编码,crc校验 带gui
- Matlab EMD工具箱+时频分析TFTB工具箱
-
用Matlab中的Simuli
nk对AM波进行调制解 - 基于MATLAB的运动控制系统的仿真软件
- 基于matlab的车牌识别内含matlab代码以
- 基于matlab的图像拼接含matlab代码以及
评论
共有 条评论