如何讀取直接零件打標碼(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碼的點陣圖。

在這裏插入圖片描述
上面的代碼不能直接對這張圖解碼,需要修改參數。在線文檔提供了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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章