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