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

原创
2019/10/10 16:57
阅读数 105

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部