配色: 字号:
《AI硬件与Pyhthon编程实践》10计算机视觉与条码识别写字字帖
2023-05-24 | 阅:  转:  |  分享 
  
计算机视觉与条码识别人工智能开源硬件与python编程实践情境导入自助借还书机可自行完成对条形码读者卡的识别、图书的条形码扫描、图书的充消磁
作业等功能,读者只需要按照屏幕显示的操作步骤进行操作,十几秒钟便可完成整个借还书的过程。 条形码不仅可以应用在图书馆、超市、仓库等
场所,在校园里也有很多应用。任务与目标了解图像处理及条形码识别技术的基本原理、相关算法和应用框架;掌握运用人工智能开源硬件设计智能
应用系统的方法,掌握Python语言的编程方法;应用人工智能开源硬件和Python相关算法模块设计条形码扫描与识别应用系统;利用P
ython编程,编写条形码提取及识别算法,实现对条形码的识别解码功能,针对生活应用场景,进一步创新设计具有实用价值的二维码应用系统
。知识拓展:条形码 条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。条形码可以用来标出物
品的制造厂家、商品名称、生产日期、图书编号、邮政快递编号、设备编号等丰富信息。知识拓展:条形码的构成静区:静区也叫空白区,分为左空
白区和右空白区,左空白区是让扫描设备做好扫描准备,右空白区是保证扫描设备正确识别条码的结束标记。起始字符:第一位字符,具有特殊结构
,当扫描器读取到该字符时,便开始正式读取代码了。数据字符:条形码的主要内容。校验字符:检验读取到的数据是否正确。不同编码规则可能会
有不同的校验规则。终止字符:最后一位字符,一样具有特殊结构,用于告知代码扫描完毕,同时还起到只是进行校验计算的作用。知识拓展:码制
区分 条形码的码制有很多种编码模式,常用的包括EAN码、UPC码、39码、128码、Codabar库德巴码等;EAN码/UPC码(
统一产品代码)。是国际通用的编码体系,是一种长度固定、无含义的条码,所表达的信息全部为数字,主要应用于国际商品标识;Codabar
(库德巴码)。可表示数字0 - 9,字符$、+、 -、还有只能用作起始/终止符的a,b,c d四个字符,可变长度,没有校验位,空白
区比窄条宽10,非连续性条形码,每个字符表示为4条3空;39码和128码:ASCII字符集编码,美国国防部和汽车行业最先使用,我国
目前为企业内部自定义码制,根据需要确定条码的长度和信息,可以是数字,也可包含字母 。知识拓展:条形码的扫描与识别 扫描。条形码的扫
描需要扫描器,扫描器利用自身光源照射条形码,再利用光电转换器接受反射的光线,将反射光线的明暗转换成数字信号。 译码。白条、黑条的宽
度不同,相应的电信号持续时间长短也不同。译码器通过测量脉冲数字电信号0、1的数目来判别条和空的数目。通过测量0、1信号持续的时间来
判别条和空的宽度。然后根据条码对应的编码规则,将条形符号换成相应的数字、字符信息。 设计与实践图像梯度与边缘检測 条形码的轮廓检测
设定条码的码制条码识别Python编程实现及结果分析图像梯度与边缘检測图像边缘的检测一般是通过对图像进行梯度运算来实现的。图像梯
度运算理解成对图像数据从各个方向(横向、纵向、斜方向等)进行求导,从而提取出图像的边缘。常用的图像梯度计算方法有Sobel算子、s
charr算子与laplacian算子 条形码的轮廓检测 获取包含条形码的图像并转换为灰度图;利用Sobel或Scharr算子计算
水平x方向和垂直y方向上的梯度幅值,得到条形码图像的梯度表示;从梯度表示图中,初步提取包含高水平梯度和低竖直梯度的图像区域;模糊并
二值化图像。然后将模糊化后的图形进行二值化,梯度图中任何小于等于255的像素设为0(黑色),其余设为255(白色);对二值化后的图
像应用数学形态学中的闭运算,消除条形码竖条之间的缝隙;连续进行若干次数学形态学中的的腐蚀及膨胀运算。找到图像中的最大轮廓,就是检测
到的条形码区域。设定条码的码制 定义一个函数,设计码制选择功能,供主程序调用 。def barcode_name(code):
if(code.type() == image.EAN2): return "EAN2" if(code.
type() == image.EAN5): return "EAN5" if(code.type() ==
image.UPCE): return "UPCE" if(code.type() == image.ISBN
10): return "ISBN10" if(code.type() == image.CODABAR):
return "CODABAR" if(code.type() == image.CODE39):
return "CODE39" 条码识别设计 image.find_barcodes([roi])方法,用来查找 roi 内所
有一维条形码并返回一个 image.barcode 对象列表。 条形码是线性一维图像,只需在一个方向上有较高分辨率, 而在另一方向
上只需较低分辨率。该函数进行水平和垂直扫描,所以可使用宽40/80/160、长480的窗口。支持所有一维条形码:EAN2、EAN5
、EAN8、UPCE、ISBN10、UPCA、EAN13、ISBN13、I25、DATABAR (RSS-14)、DATABAR_
EXP (RSS-Expanded)、CODABAR、CODE39、PDF417、CODE93、CODE128等。编程及实现 i
mg = sensor.snapshot() codes = img.find_barcodes()#利用人工智能开源控制板
固化的Python计算机视觉算法进行条形码的识别while(True): clock.tick() img = sen
sor.snapshot() codes = img.find_barcodes() for code in code
s: img.draw_rectangle(code.rect()) print_args = (ba
rcode_name(code), code.payload(), (180 code.rotation()) / math.
pi, code.quality(), clock.fps()) print("Barcode %s, Payloa
d \"%s\", rotation %f (degrees), quality %d, FPS %f" % print_args
) if not codes: print("FPS %f" % clock.fps())验证及完善 调试过程
中,利用串口终端显示区观察条形码的识别情况。print(“Barcode %s, Payload \”%s\“, rotation
%f (degrees), quality %d, FPS %f” % print_args)函数把识别出的条形码的属性和内容全
部显示出来。分析与思考互联网上有很多在线条形码生成器,了解他们的功能和用法,看看能否生成一批你所需要的条形码。了解人工智能开源硬件
板的对外接口,利用人工智能开源硬件板可以设计条形码应用系统吗?针对你的创意还有什么欠缺,给出一个解决方案。针对校园或社会生活,条形码还能发挥什么作用?结合诸如Arduino等开源硬件和传感器设计一个解决方案。网上收集更进一步的条形码资料,从信息容量、识别速度、数据安全、抗污损能力等方面与二维码做个比较。条形码的抗污损能力差、信息安全能力不足等欠缺,思考有什么对策。
献花(0)
+1
(本文系大高老师首藏)