一维条码解码

一维条码是信息编码的标准符号,包括EAN-13、EAN-8、UPC等多种码制。其解码过程涉及阈值处理、线条检测等步骤,本文将介绍EAN-13码的解码流程,并提供MATLAB代码示例。
摘要由CSDN通过智能技术生成

一维条码是一种能用于信息编码和信息自动识别的标准符号,是由一组宽度不同的黑白符号按一定规则交替排列编码组成的图形符号可用于表示一定的信息。

它是对物品进行代号标识需要依赖数据库或通讯网络才能发挥最大的作用。常见的码制(条码符号类型)有EAN-13码,EAN-8码,UPC码,交叉25码。

EAN-13解码:

EAN-13码结构


解码流程:

一维条码解码matlab代码

function [code]=one_dimensional_codeself(img)
%% 图片的读取
f=imread(img);% read figure
g=rgb2gray(f);  %turn to gray figure
figure(1);
imshow(g);title('原图像');
[M,N]=size(g);
%% 图片的处理
T=graythresh(g)*255; %get threshold
g= Thresholding(g,T); %二值化
%% 噪声过滤
g=medfilt2(g); %filter
figure(2);
imshow(g);title('滤波后的图像');
im_edge=edge(g,'canny'); %边缘检测
figure(3);
imshow(im_edge);title('边缘检测后的图像');
A=line_detection(im_edge);
g=~g; %黑白像素翻转
%% 图片旋转
g=imrotate(g,A*180/pi,'nearest'); %旋转图像
g=~g;
figure(4)
imshow(g);title('旋转后的图像1');
is=is_upsize(g);       %判读是否是正向水平
if is==1
    g=imrotate(g,180,'nearest');
end
figure(5)
imshow(g);title('旋转后的图像2');
bar_width=bar_width_F(g);%获取条空的宽度
decode=dedecode_f(bar_width);%条空换做0,1表示
%% 一维码破解
if check_1(decode)
    code=decode_f(decode);
end

Thresholding.m

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值