资源简介
条形码识别,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的100个问题
- 径向基网络预测地下水位 matlab仿真实
- 哈弗曼费诺汉明码matlab
- ackley函数求极小值问题-用matlab算法求
- K-means算法的Matlab实现以及Iris数据集
- CR中基于能量检测的频谱感知matlab程序
- matlab 神经网络工具箱 使用教程
- Prewitt分割实现
- matlab常用小波基的尺度函数和小波函
- MATLAB实现K近邻法分类
- Matlab仿真数字音乐合成器
- MATLAB神经网络超级学习手册源码
- 分布式压缩感知边信息提取的matlab代
- LMD局域均值分解matlab测试程序
- matlab 计算图像熵,灰度均值,方差的
- 李纯明的水平集程序matlab
- 阈值分割的matlab程序
- 人工蜂群ABC算法matlab官方源码两个版
- MATLAB射击模拟系统仿真
- MATLAB程序实现视频中运动的目标的跟
- 双频测距MATLAB代码
- 菲涅尔全息图的MATLAB程序
- 抽样信号的matlab实现
- 运用追赶法来解三对角线性方程组M
- 导弹制导律Matlab仿真
- Matlab计算遥感图像熵,清晰度和相关
- MATLAB实现的欧式聚类,多种子点区域
- 英国设菲尔德Sheffield大学的MATLAB遗传
- LDPC的BP译码matlab仿真
评论
共有 条评论