文档章节

如何读取直接零件打标码(DPM)

yushulx
 yushulx
发布于 10/10 16:57
字数 433
阅读 14
收藏 0

DPM(Direct Part Marking), 中文翻译成直接零件打标,指的是在工业零件(如汽车轮毂,电路板等)表面永久打标文字或可读取符号,如DataMatrix和QR二维码。这种条形码的识别难度比较大。Dynamsoft Barcode Reader SDK v7.2开始支持DPM的条形码解码。

读取打标在零件上的DataMatrix码

获取Dynamsoft Barcode Reader SDK Python模块的源码,按照说明编译安装。

实现条形码识别的代码很简单:

from dbr import DynamsoftBarcodeReader
dbr = DynamsoftBarcodeReader()
dbr.initLicense('LICENSE-KEY')
results = dbr.decodeFile(fileName, dbr.BF_ALL)
for result in results:
    print('barcode format: ' + result[0])
    print('barcode value: ' + result[1])

现在放一张DataMatrix码的点阵图。

在这里插入图片描述

上面的代码不能直接对这张图解码,需要修改参数。在线文档提供了C语言的设置方法:

runtimeSettings.furtherModes.dpmCodeReadingModes[0] = DPMCRM_GENERAL;
runtimeSettings.localizationModes[0] = LM_STATISTICS_MARKS;

使用Python可以通过JSON格式的模板来设置。

  1. 获取所有参数

    	params = dbr.getParameters()
    	import json
    json_obj = json.loads(params)
    
  2. 修改参数

    	templateName = json_obj['ImageParameter']['Name']
    	json_obj['ImageParameter']['DPMCodeReadingModes'][0]['Mode'] = 'DPMCRM_GENERAL'
    	json_obj['ImageParameter']['LocalizationModes'][0]['Mode'] = 'LM_STATISTICS_MARKS'
    
  3. 保存设置

    	params = json.dumps(json_obj)
    	ret = dbr.setParameters(params)
    

运行程序得到解码结果:

在这里插入图片描述

完整代码

from dbr import DynamsoftBarcodeReader
dbr = DynamsoftBarcodeReader()
dbr.initLicense('LICENSE-KEY')
 
params = dbr.getParameters()
print(params)
 
import json
json_obj = json.loads(params)
# Update JSON object
templateName = json_obj['ImageParameter']['Name']
# DPM
json_obj['ImageParameter']['DPMCodeReadingModes'][0]['Mode'] = 'DPMCRM_GENERAL'
json_obj['ImageParameter']['LocalizationModes'][0]['Mode'] = 'LM_STATISTICS_MARKS'
# Convert JSON object to string
params = json.dumps(json_obj)
# Set parameters
ret = dbr.setParameters(params)
 
results = dbr.decodeFile('dpm.jpg', dbr.BF_ALL)
for result in results:
    print('barcode format: ' + result[0])
    print('barcode value: ' + result[1])

源码

https://github.com/dynamsoft-dbr/python

© 著作权归作者所有

yushulx
粉丝 29
博文 111
码字总数 62988
作品 0
杭州
私信 提问
购买视觉智能相机必须要问清楚10个问题

智能相机技术方案提供商朗锐智科(www.loongv.com)介绍,典型机器视觉系统是一种就是基于个人计算机(PC)的视觉系统,一般由光源、CCD或CMOS相机、图像采集卡、图像处理软件以及一台PC机构成。其...

gunser
2018/05/15
0
0
学会这几点,成为数控编程高手并不难,你学会了吗?

  1、工艺是编程的基础。不懂工艺,不能称会编程。所以,想要熟练掌握数控机床编程技术,首先你得是一名优秀的工艺员。   数控机床集钻、铣、镗、铰、攻丝等工序于一体。对工艺人员的技术...

UG数控编程
2018/03/26
0
0
有趣的Tensorflow游乐场以及有趣的思考

闲来无事不小心发现一个好玩有适合神经网络初学者的工具。google的神经网络Tensorflow游戏场,通过拖拽就可以选择特征,配置权重,配置隐藏层等,下图是通过左侧点集的点位置(x1,x2),算出点集...

武耀文
2018/08/03
0
0
一个实际中中关于有向链表的问题

在生产过程中,零件A不够用时,我们可以用零件B来替换零件A,但是零件B由于某些关系不能替换A,关系记为 A->B, 我们在文件中记录为: A,B 零件A和B也有可能只是厂家不一样型号完全一样,于是...

吃土的汉子
2013/04/27
102
1
数控车床师傅的操作技巧与车刀刃磨操作口诀

  因加工零件的更换频繁及工厂条件受限,十年来我们都是自己编程,自己对刀,自己调试及完成零件的加工,总结起来操作技巧分为以下几点:      一、 编程技巧   对加工的产品精度要求...

UG数控编程
2018/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

5 分钟快速学习,缓存一致性优化方案!

缓存操作 读缓存 读缓存可以分为两种情况命中(cache hit)和未命中(cache miss): 缓存命中 首先从缓存中获取数据 将缓存中的数据返回 缓存未命中 首先从缓存中获取数据 此时缓存未命中,...

架构文摘
10分钟前
3
0
【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式锁-升级版

设计 我们依然实现java.util.concurrent.locks.Lock接口。 和上一文中实现方式不同的是,我们使用ZooKeeper的EPHEMERAL_SEQUENTIAL临时顺序节点。 当首次获取锁时,会创建一个临时节点,如果...

阿里云官方博客
12分钟前
3
0
inner join 和 union all 做的汇总区别

inner join CREATE OR REPLACE VIEW M_INVENT_BARCODE_DIFF ASSELECT "INV_PART_NO","INV_ONHAND","INV_LOCATION","PART_NO","BAR_ONHAND","BAR_LOCATION"FROM (SELECT m.part_no AS......

donald121
18分钟前
4
0
EMC 设计经验总结

整体布局 1、高速、中速、低速电路要分开; 2、强电流、高电压、强辐射元器件远离弱电流、低电压、敏感元器件; 3、模拟、数字、电源、保护电路要分开; 4 、多层板设计,有单独的电源和地平...

demyar
21分钟前
2
0
支付宝高级Java现场面试35题:页锁+死锁+集群+雪崩+负载等

年底是冲刺大厂的良机,这个时间点大部分人都在观望年终奖与加薪幅度,看情况再伺机而动,人才市场的竞争反而没那么激烈。 获悉到支付宝近期有HC放出,我通过内推渠道,得到了支付宝的面试机...

mikechen优知
24分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部