matlab 识别一维条形码 代码,matlab一维条形码码字识别程序.doc

实用文档

文案大全

close all

I = imread('E:\txm.jpg');

J= rgb2gray(I);

figure(1)

imshow(J);

title('灰度化图像 ');

[e1,e2]=size(J);

Im=imcrop(J,[e2/2-200,e1/2-200,400,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(J

J(K)=0;

K=find(J>=T);

J(K)=255;

figure(3)

imshow(J)

title(' 图像二值化 ');

B=medfilt2(J,[5,1]);

figure(4)

imshow(B)

title('中值滤波后图像');

[y0,x0]=size(B);

BW = edge(B,'log');

figure(5);imshow(BW);title('边缘检测图像')

%function code = barcode(pic) %条形码识别

check_left = [13,25,19,61,35,49,47,59,55,11;... %左边数据编码,奇

39,51,27,33,29,57, 5,17, 9,23]; %左边数据编码,偶

check_right = [114,102,108,66,92,78,80,68,72,116]; %右边数据编码

first_num = [31,20,18,17,12,6,3,10,9,5];%第一位数据编码

bar = imread('E:\txm.jpg');%读输入条形码图片

bar_Gray = rgb2gray(bar);%将RGB图片转换灰度图

[a_hist x] = imhist(bar_Gray);

hist_max = [];

if a_hist(1)>a_hist(2)

hist_max = [hist_max 1];

end

x = max(x);

for i=2:x

if a_hist(i)>a_hist(i-1) && a_hist(i)>a_hist(i+1)

hist_max = [hist_max i];

end

end

if a_hist(x)

hist_max = [hist_max x+1];

end

[m,n] = size(hist_max);

k = 0;

max_1 = 0;

max_2 = 0;

for i=1:n

if k

k = a_hist(hist_max(i));

max_1 = hist_max(i);

end

end

temp = a_hist(max_1);

a_hist(max_1) = 0;

k = 0;

for i=1:n

if k

k = a_hist(hist_max(i));

max_2 = hist_max(i);

end

end

a_hist(max_1) = temp;

if max_1>max_2

k = max_1;

max_1 = max_2

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值