资源简介
条形码识别,matlab代码 ,内负条形码,以及测试过,简单实用,便于作为课程设计等。

代码片段和文件信息
clc;
close all;
%启动定时器,测试软件性能
[filenamefilepath]=uigetfile(‘*.jpg‘‘打开文件‘);%gui中打开文件
filep=strcat(filepathfilename);
%filep
Image=imread(filep);
tic;
%读取图像并二值化
% Image = imread(‘0081.jpg‘);
level = graythresh(Image); %获取图像二值化的阈值
bw = im2bw(Imagelevel); %二值化处理
imshow(bw);
t = 1;
p = 1;
[m n] = size(bw);
%初步计数黑白条的书目
q = round(m/2);
for i=q
for j=1:n-1
if bw(ij)==0&&bw(ij+1)==1%颜色变化由黑色变成白色,黑条
x(t) = j;
t = t+1;
end
end
end
for i=q
for j=1:n-1
if bw(ij)==1&&bw(ij+1)==0 %颜色变化由白色变成黑色,白条
y(p) = j;
p = p+1;
end
end
end
pin = 0;
while length(x)~=30||length(y)~=30
%%等待提示信息
if pin ==0
display(‘正在扫码,请对准而条形码............‘);
end
pin = pin+1;
%条形码有损坏是逐行扫描
for pp=q:round(5*m/6)
t=1;
p=1;
if length(x)==30&&length(y)==30 %通过判断黑白条数测试当前行有无算坏
break;
end
for i=pp
for j=1:n-1
if bw(ij)==0&&bw(ij+1)==1
x(t) = j;
t = t+1;
end
end
end
for i=pp
for j=1:n-1
if bw(ij)==1&&bw(ij+1)==0
y(p) = j;
p = p+1;
end
end
end
end
end
if length(x)~=30||length(y)~=30
display(‘扫码错误!‘);
return;
end
if i~=round(m/2)
display(‘该条形码已受损,但仍然可以正常扫描‘);
end
%计算每个条—空的宽度,利用所记录在xy数组中的坐标值,对应相减
for ii=1:30
if ii==1
d(ii)=x(ii)-y(ii); %计算第一个条的宽度
d(ii+1)=y(ii+1)-x(ii); %计算第一个空的宽度
end
if ii>1
if ii>1&&ii<30
d(2*ii) = y(ii+1)-x(ii); %分别计算第2~29个空的宽度
d(2*ii-1)=x(ii)-y(ii); %分别计算第2~29个条的宽度
elseif ii==30
d(ii*2-1)=x(ii)-y(ii); %总共有59个条-空,单独计算第三十个条的宽度
end
end
end
j = 3;
for i=1:6
r(i)=(d(j+1)+d(j+2)+d(j+3)+d(j+4))/7; %计算左边六个字的基准码的宽度
end
j=32;
for i=7:12
r(i)=(d(j+1)+d(j+2)+d(j+3)+d(j+4))/7; %计算右边五个字的基准码的宽度
end
n=0;%四字计数
i=1;
j1=1;
j=4;%跳过起始符,从左边第一个开始读码
flag0=0;%作为标识符,将样条交替翻译成1或者0
while j<=56
if n==4
n=0;
i=i+1;
end
if d(j)<0.5*r(i)%小于0.5舍去
return;
elseif d(j)<1.5*r(i)&&d(j)>0.5*r(i)%0.5~1.5记为1个值
if flag0==0
bs(j1)={‘0‘};%对于的被译码
else
bs(j1)={‘1‘};
end
j1=j1+1;
elseif (d(j)>=1.5*r(i))&&(d(j)<2.5*r(i))%1.5~2.5记为2个值
if flag0==0
bs(j1)={‘00‘};
else
bs(j1)={‘11‘};
end
j1=j1+1;
elseif (d(j)>=2.5*r(i))&&(d(j)<3.5*r(i))%2.5~3.5记为3个值
if flag0==0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6420 2018-07-04 15:16 条形码识别\Shibie.m
文件 24331 2018-07-04 14:17 条形码识别\test.jpg
目录 0 2018-07-04 15:28 条形码识别
----------- --------- ---------- ----- ----
30751 3
- 上一篇:关于matlab的100个问题
- 下一篇:matlab程序,实现车牌图片的识别
相关资源
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
- matlab程序用Hopfield网络解决TSP
评论
共有 条评论