全文预览

matlab一维条形码码字识别程序

上传者:相惜 |  格式:doc  |  页数:15 |  大小:30KB

文档介绍
[m,n]=size(bar_Gray);%求灰度图的大小fori=1:m%对图像进行二值化处理forj=1:nifbar_Gray(i,j)>T%选择适当的阈值进行二值化处理bar_10(i,j)=1;elsebar_10(i,j)=0;endendend%imshow(bar_10);l=0;%检测59根条形码fori=1:mk=1;l=l+1;forj=1:n-1ifbar_10(i,j)~=bar_10(i,j+1)%比较同一行相邻两点的颜色是否一致%bar_x(l,k)=i;bar_y(l,k)=j;%记录转折点的纵坐标k=k+1;%准备记录下一个数据点endifk>61%点数大于60,该行应该删掉l=l-1;breakendendifk<61%点数小于60,该行应该删掉l=l-1;endend[m,n]=size(bar_y);ifm<=1%查看条形码是否有效code='0';fprintf(1,'GameOver!\n');returnendfori=1:m%计算每根条形码的宽度forj=1:n-1bar_num(i,j)=bar_y(i,j+1)-bar_y(i,j);ifbar_num(i,j)<0bar_num(i,j)=0;endendendbar_sum=sum(bar_num)/m;%求每根条形码宽度的平均值k=0;fori=1:59%计算59根条形码的总宽度k=k+bar_sum(i);endk=k/95;%计算单位条形码的宽度fori=1:59%计算每根条形码所占位数bar_int(i)=round(bar_sum(i)/k);endk=1;fori=1:59%将条形码转换成二进制数ifrem(i,2)forj=1:bar_int(i)%黑色条用1表示bar_01(k)=1;k=k+1;elseforj=1:bar_int(i)%白色条用0表示

收藏

分享

举报
下载此文档