• 大小: 2.05MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-05
  • 语言: Matlab
  • 标签: matlab  条形码  

资源简介

基于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


评论

共有 条评论