MATLB图像处理条形码识别

基于数字图像处理解决条形码识别

matlab2018a读取图像,检测识别图中条形码并翻译,显示其产品信息,结合excel信息库、查找指定产品。

主要功能

手机拍照识别
1、读取图片,并设定最优值进行二值化
2、探测图片条形码位置并矫正
2、检测图片中的条形码并分割出来
3、对条形码的条纹宽度测量并根据编码规则译码
4、译码校验、信息提示
5、条码译文在excel库中比对产品信息
6、支持添加新类产品信息
7、支持查找指定产品信息
8、GUI界面人机交互

主要技术

1、canny算子边缘探测
2、基于hougf变化的图像矫正算法
3、图像开运算、闭运算(腐蚀、膨胀、擦除、取反)
4、条形码边缘检测技术和图像分割
5、EAN-13码的译码规则设计
6、结合excel做数据库,存储产品信息并显示和提示
7、GUI界面操作

实际效果

                               产品信息库


[形态学处理]

探测边界,分割条形码

                                              GUI交互界面

源码小窥

%%%%%%探测矫正%%%%%%%
bw = edge(double(handles.erzhi),‘sobel’,‘horizontal’); %用sobel算子检测水平方向检测边缘
[m,n]=size(bw);
S=round(sqrt(m^2 + n^2));%S可以去到的最大值
ma = 180;
md = S;
r=zeros(md,ma);
c=0;
for i=1:m
for j=1:n
if bw(i,j)==1
for k=1:ma
ru=round(abs(icos(k3.14/180) + jsin(k3.14/180)));
r(ru+1,k)=r(ru+1,k)+1;
end
end
end
end
if c<=90
rot=-c;
else
rot=90-c;
end
i3=edge(handles.erzhi,‘canny’); %canny算子边缘检测
%figure(1);imshow(i3);title(“边缘检测”);
[H, theta, rho]= hough(i3,‘RhoResolution’, 0.5); %%霍夫变化
lines=houghlines(i3,theta,rho,peak); %%霍夫反变化
sum=0;
if length(lines)
for k=1:length(lines)
pic=imrotate(handles.erzhi,rot,‘crop’);
handles.jiaozheng=pic;
guidata(hObject, handles);
axes(handles.axes4)
imshow(handles.jiaozheng)
set(handles.edit6,‘string’,‘矫正完毕’);
%%%%%%%形态学运算处理分割%%%%%%%%%%
se = strel(‘rectangle’,[80 100]);%设置结构元素对象
I2= imdilate(I2,se); %4.膨胀
figure(9),imshow(I2),title(‘3’);
[m,n]=size(I2);
I5=I2;
%列边缘探测%
t=1;
for i=round(0.3*m):5:m-10
for j=1:n-2
if I5(i,j)==0&&I5(i,j+1)==1 %如果探测到左边矩形位置
H0(t)=j;temp=j;
for j=temp:n-2
if I5(i,j)==1&&I5(i,j+1)==0 %如果探测到右边矩形位置
H1(t)=j;t=t+1;
break;
end
end
end
end
end
for i=1:2
M(i)=mode(H0); %取H0中众数
N(i)=mode(H1); %取H0中众数

%%%%%%%%%处理条纹,除去干扰%%%%%%%%%%%%%
[m n] = size(bw); %获取横纵尺寸
%%%%去除图干扰生成记录条纹间隔信息的levl中%%%%%%
for i=1:n
sum=0;
for j=1:m %每列相加求和
sum=sum+bw(j,i);
end
if sum>round(m/2) %去除半数干扰
levl(i)=1;
else levl(i)=0;
end
end

for i=1:n-1
if levl(i)==0&&levl(i+1)==1
x(t)=i;
t=t+1;
end
if levl(i)==1&&levl(i+1)0
y§=i;
p=p+1;
end
end
%%%%%%%计算条纹宽度结果保存在d中%%%%%%%%%%
for ii=1:30
if ii1 %起始条纹
d(ii)=x(ii)-y(ii); %计算第一个条的宽度
d(ii+1)=y(ii+1)-x(ii); %计算第一个空的宽度
end
if ii>1 %第二个条纹开始
if ii>1&&ii<30

%%%%%%%%%计算基准宽度%%%%%%%%%%%%%
add=0;
j = 3;
for i=1:6
r(i)= (d(j+1)+d(j+2)+d(j+3)+d(j+4)+add)/7.0; %计算左边六个字的基准码的宽度
end

%%%%%%%%结果检验%%%%%%%%%%%
%%%%%%%%若校验失败则显示异常%%%%%%%%%%%
sum1=0;
sum2=6;
for i=1:6
sum1=result(2i-1)+sum1;
sum2=result(2
i)+sum2;
end
sum1=sum1*3;sum2=sum2-result(12);
if result(12)==10-rem((sum1+sum2),10)
set(handles.edit1,‘string’,num2str(result));
set(handles.edit6,‘string’,‘识别完毕’);

else
set(handles.edit6,‘string’,‘识别异常’);
end
%%%%%%%查询excel信息库%%%%%%%%%%%%
[m1,m2]=xlsread(‘libary’);%%读取excle数据
for ii=1:find(m1(:1),1,‘last’)
if m1(ii)==handles.shibie
disp1=m2(ii,1);
disp2=m2(ii,2);
end
end
set(handles.edit3,‘string’,disp1);
set(handles.edit2,‘string’,disp2);
set(handles.edit6,‘string’,‘显示完毕’);

特点

1、支持自定义GUI 处理
2、取样方便,手机拍照即可(老年机拍照请靠后)
3、源码自创,不懂可讲。
4、结构简单、注释详细容易理解
5、matlab功能强大,处理速度快秒出结果(第一次创建环境会稍慢)。

最后

上面展示代码不过冰上一角,也请大佬们多多探讨。
更多详细内容请加微信:w15136355113(注明来意)。
报价100RMB,包讲解。
另有实际演示视频可见

MATLAB图像处理识别商品条形码、图像分割相关推荐

  1. matlab图像处理 识别颜色,MATLAB图像处理_直接操作像素点进行颜色变换

    需求 直接操作RGB图像的像素点,进行颜色的相关操作. 掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行.整列的操作. 如: J = [1 2 3; 4 5 6; 7 8 9]; --这里 ...

  2. 基于MATLAB图像处理的硬币个数识别系统

    基于MATLAB图像处理的硬币个数识别系统 1.课题介绍 本设计为基于MATLAB的硬币图像识别统计装置,通过数码相机获取平铺无重叠堆积的硬币的图像,并通过Matlab工具处理后统计硬币的数目.通过控 ...

  3. matlab 车辆 pdf,关于MATLAB图像处理车辆检测与识别.PDF

    第24卷增刊 数 据 采 集 与 处 理 V01.24No.S ofData 8L oct.2009 2009年10月 Journal AcquisitionProcessing 文章编号:1004- ...

  4. 基于MATLAB图像处理交通信号灯识别

    基于MATLAB图像处理交通信号灯识别 摘 要:交通信号灯是智能车辆在城市环境中行驶的主要指示信号,在城市交通安全中发挥了不可或缺的作用.交通信号灯通常设在交叉口,能够供应智能车辆的方位信息,查看和辨 ...

  5. 基于MATLAB图像处理的恶劣天气自动车牌识别

    基于MATLAB图像处理的恶劣天气自动车牌识别系统设计 摘要 针对恶劣天气环境下传统的自动车牌识别系统存在运行时间长.输出车牌信息不准等问题,本文提出了借助MATLAB的图像处理功能从图像去雾.车牌定 ...

  6. matlab --- 图像处理基础

    MATLAB图像处理 1. 数字图像处理 参考 数字图像处理(Digital Image Processing)又称为计算机图像处理,是一种将图像信号数字化利用计算进行处理的过程.随着计算机科学.电子 ...

  7. matlab能力处理,书+程序《MATLAB图像处理:能力提高与应用案例》赵小川

    [实例简介] MATLAB图像处理能力提高与应用案例 [赵小川 编著] 2014年版,书+程序(仅供学习) [实例截图] [核心代码] c3c59b5e-16c1-4bda-938e-8fcfb2ff ...

  8. 《Matlab图像处理》part1 Snakes:Active Contour Models 主动轮廓模型

    <Matlab图像处理>part1 Snakes:Active Contour Models 主动轮廓模型 参考博客: 数字图像处理-图像分割:Snake主动轮廓模型 Matlab代码及运 ...

  9. matlab裂纹图像处理,MATLAB图像处理的钢材表面裂纹检测系统设计

    MATLAB图像处理的钢材表面裂纹检测系统设计 ---------------------------------------------------------------范文最新推荐------- ...

  10. 深度学习图像处理目标检测图像分割计算机视觉 01--图像预处理

    深度学习图像处理目标检测图像分割计算机视觉 01-图像预处理 摘要 一.开发环境搭建 1.1 anaconda安装 1.2 安装TensorFlow 1.3 安装OpenCV 二.中值滤波 三.高斯滤 ...

最新文章

  1. 理解并解决IE的内存泄漏方式[翻译2]
  2. Android程序App开机自启动
  3. oracle12 官网文档,Oracle 21c 官方文档 发布了
  4. 【HDU - 薛猫猫杯程序设计网络赛】【题解】
  5. 10.9 自动注册DSN和创建表
  6. 51信用卡在微服务架构下的监控平台架构实践
  7. .NET基础架构方法—DataTableToExcel通用方法
  8. RabbitMQ小笔记
  9. TeaVM编译耗时太长,为节省时间,跳过test
  10. html text-decoration,如何使用text-decoration
  11. 浪潮服务器pxe安装操作系统,规划 PXE 启动的操作系统部署
  12. 系统集成项目管理工程师是哪个部门发证?
  13. java满天星星闪烁_满天星空的星星为什么闪烁?
  14. 淘宝双十一自动化领喵币python脚本
  15. 一、基础入门下------------视频处理
  16. cst matlab,CST与Matlab连接设置
  17. java远程打印机 文件_使用Java将文本文件打印到特定打印机
  18. 离散实验3 集合的基本运算 (编程要求 根据提示,练习集合的基本运算法则)
  19. 2022-2028年中国零售业信息化行业市场深度评估及投资机会预测报告
  20. QQ2006贺岁版SP1发布更新地址栏搜索(转)

热门文章

  1. android7.1添加F13到F24按键
  2. Slave_IO_Running: No 的解决
  3. 【程序员的自我修养】[动态图文] 超详解函数栈帧
  4. RIFT Multi-Modal Image Matching Based on Radiation-Variation Insensitive Feature Transform
  5. 【WinHex篇】WinHex制作特定区域镜像教程
  6. Subscript ‘subscript(_:)‘ requires that ‘String.Index‘ conform to ‘RangeExpression‘
  7. 【Flutter小记10】apk 提交各大应用市场,出现armeabi与arm64 版本标识/版本号不一致无法上传审核的解决方案
  8. stm32f407的三重ADC同步触发模式配置
  9. c语言临时内存变量释放,C语言中的内存分配与释放
  10. Combating Web Spam with TrustRank的实验