dpm码识别_如何读取直接零件打标码(DPM)

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

上面的代码不能直接对这张图解码,需要修改参数。在线文档提供了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)

运行程序得到解码结果:

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

这些概念都是在CSDN开发的ChitGPT中的dpm_solver.py文件中出现的。 - DPM_Solver:这是一个类,实现了动态过程建模(Dynamic Process Modeling)求解器的功能。它接受一些参数(如时间步长,噪声预测函数,数据预测函数等),并使用这些参数对给定的时间序列数据进行建模。 - noise_prediction_fn:这是一个函数,用于预测时间序列数据中的噪声。 - data_prediction_fn:这是一个函数,用于预测时间序列中的未来数据。 - model_fn:这是一个函数,用于构建时间序列数据的模型。 - get_time_steps:这是一个函数,用于获取时间步长。 - get_orders_and_timesteps_for_singlestep_solver:这是一个函数,用于获取单步求解器的顺序和时间步长。 - denoise_to_zero_fn:这是一个函数,用于将时间序列数据中的噪声去除。 - dpm_solver_first_update:这是一个函数,用于进行第一次更新动态过程建模求解器。 - singlestep_dpm_solver_second_update:这是一个函数,用于进行单步求解器的第二次更新。 - singlestep_dpm_solver_third_update:这是一个函数,用于进行单步求解器的第三次更新。 - multistep_dpm_solver_second_update:这是一个函数,用于进行多步求解器的第二次更新。 - multistep_dpm_solver_third_update:这是一个函数,用于进行多步求解器的第三次更新。 - singlestep_dpm_solver_update:这是一个函数,用于进行单步求解器的更新。 - multistep_dpm_solver_update:这是一个函数,用于进行多步求解器的更新。 - dpm_solver_adaptive:这是一个函数,用于自适应地构建动态过程建模模型。 - interpolate_fn:这是一个函数,用于插值。 - expand_dims:这是一个函数,用于扩展数据的维度。 - fn:这是一个函数,用于在多个函数之间切换。 这些函数和类相互关联,一起实现了动态过程建模求解器的功能。其中,DPM_Solver是主要的类,其他函数则是该类的辅助函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值