小言_互联网的博客

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

579人阅读  评论(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


转载:https://blog.csdn.net/yushulx/article/details/102485276
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场