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格式的模板来设置。
-
获取所有参数
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)
运行程序得到解码结果:
完整代码
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
转载:https://blog.csdn.net/yushulx/article/details/102485276
查看评论