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码的点阵图。
![5c83f642e34c2b08ed4fc5ea3d643142.png](https://img-blog.csdnimg.cn/img_convert/5c83f642e34c2b08ed4fc5ea3d643142.png)
上面的代码不能直接对这张图解码,需要修改参数。在线文档提供了C语言的设置方法:
runtimeSettings.furtherModes.dpmCodeReadingModes[0] = DPMCRM_GENERAL;
runtimeSettings.localizationModes[0] = LM_STATISTICS_MARKS;
使用Python可以通过JSON格式的模板来设置。
- 获取所有参数
params = dbr.getParameters() import json json_obj = json.loads(params) - 修改参数
templateName = json_obj['ImageParameter']['Name'] json_obj['ImageParameter']['DPMCodeReadingModes'][0]['Mode'] = 'DPMCRM_GENERAL' json_obj['ImageParameter']['LocalizationModes'][0]['Mode'] = 'LM_STATISTICS_MARKS' - 保存设置
params = json.dumps(json_obj) ret = dbr.setParameters(params)
运行程序得到解码结果:
![f1cedc40494fef17bbe5a2c432006eb7.png](https://img-blog.csdnimg.cn/img_convert/f1cedc40494fef17bbe5a2c432006eb7.png)
完整代码
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