资源简介

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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-11-18 19:45  matlab 条码\
     文件      100129  2014-06-03 10:12  matlab 条码\01.jpg
     文件     3077178  2009-05-19 02:37  matlab 条码\avbin.dll
     文件     4660639  2009-05-20 02:44  matlab 条码\avbin64.dll
     文件        3574  2007-11-12 19:43  matlab 条码\barcognition.m
     文件        6448  2014-05-21 10:26  matlab 条码\bw3.jpg
     文件        8144  2016-11-18 19:13  matlab 条码\codebar.m
     文件        8048  2014-05-21 16:35  matlab 条码\codebarreg.m
     文件       28788  2009-10-16 04:28  matlab 条码\FFGrab.cpp
     文件       44571  2009-10-16 03:49  matlab 条码\FFGrab.mexa64
     文件       42230  2009-10-16 04:06  matlab 条码\FFGrab.mexglx
     文件       39196  2009-10-16 04:20  matlab 条码\FFGrab.mexmac
     文件       42192  2009-10-16 04:20  matlab 条码\FFGrab.mexmaci
     文件       39328  2009-10-16 04:20  matlab 条码\FFGrab.mexmaci64
     文件      137998  2009-10-16 04:14  matlab 条码\FFGrab.mexw32
     文件      756917  2009-11-13 03:11  matlab 条码\FFGrab.mexw64
     文件        2409  2007-11-12 19:30  matlab 条码\findchar.m
     文件       19608  2014-06-03 10:13  matlab 条码\hs_err_pid7668.log
     文件        2354  2014-05-21 16:36  matlab 条码\I5.jpg
     文件        1087  2007-11-08 10:32  matlab 条码\ImageEdgePoint.m
     文件        4382  2014-06-03 12:00  matlab 条码\imagefilter.m
     文件     9536816  2009-05-18 23:20  matlab 条码\libavbin.dylib
     文件     4326671  2009-09-26 03:35  matlab 条码\libavbin.so
     文件     4326470  2009-10-10 11:34  matlab 条码\libavbin.so.32
     文件     3711574  2009-10-10 11:44  matlab 条码\libavbin.so.64
     文件        1334  2009-11-13 07:28  matlab 条码\license.txt
     文件       10131  2007-07-28 10:24  matlab 条码\mexDDGrab.cpp
     文件       77824  2008-10-13 22:36  matlab 条码\mexDDGrab.dll
     文件       77824  2008-10-13 22:36  matlab 条码\mexDDGrab.mexw32
     文件      106496  2008-04-29 03:12  matlab 条码\mexDDGrab.mexw64
     文件       25976  2009-10-16 04:08  matlab 条码\mmread.m
............此处省略4个文件信息

评论

共有 条评论