使用matlab识别条形码(目前还无法自动定位图片中条形码位置,需人工确定条形码所在范围区间)

这篇博客介绍了如何使用MATLAB进行一维条形码的手动识别过程,包括图像灰度化、二值化、条形码区域裁剪等步骤,并通过查找编码表计算条形码的数值,但未实现自动定位条形码功能。
摘要由CSDN通过智能技术生成


close all
I = imread('C:\Users\Administrator\Desktop\001.bmp');






A=size(I);
if length(A)==3
J=rgb2gray(I);
else
J=I;
end








figure(1)
imshow(J);
title('灰度化图像 ');
[e1,e2]=size(J);
Im=imcrop(J,[820,980,800,400]);     缺点:人工确定条形码所在范围区间
figure(2)
subplot(1,2,1),imshow(Im)
title('中心区域 ');
subplot(1,2,2),imhist(Im)
title('中心区域直方图');
[xa,ya]=size(Im);                    
b=double(Im);                   
zd=double(max(Im)) ;                 
zx=double(min(Im)) ;               
T=double((zd+zx))/2;                  
count=double(0);                      
while 1                 
    count=count+1; 
    S0=0.0; n0=0.0;                   
    S1=0.0; n1=0.0;                 
    for i=1:xa
        for j=1:ya
            if double(Im(i,j))>=T
                S1=S1+double(Im(i,j)); 
                n1=n1+1;                
            else 
                S0=S0+double(Im(i,j));  
                n0=n0+1;               
            end 
        end 
    end  
    T0=S0/n0; 
    T1=S1/n1; 
    if abs(T-((T0+T1)/2))<0.1    
        break;
    else
       T=(T0+T1)/2;                 
   end 
end 
count
T
K=find(Im<T);
Im(K)=0;
K=find(Im>=T); <
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值