close

Halcon 的 二維條碼處理 並不困難,困難的是得先讀完說明.........

此說明 以常見的 "Data Matrix ECC 200" 為主

主要會使用的Function有

1.建立二維條碼處理的 Handle reate_data_code_2d_model( : : SymbolType, GenParamNames, GenParamValues : DataCodeHandle)
SymbolType : 二維條碼的格式
GenParamNames:參數名稱 可空  或設定成 default_parameters
GenParamValues :參數 如果上者沒有設定則此也不可設定,如果上者 設定成 default_parameters ,則此參數可設定 下列三種 參數

Model parameter 'standard_recognition' 'enhanced_recognition' 'maximum_recognition'
Polarity dark symbols on a light background dark symbols on a light background and vice versa dark symbols on a light background and vice versa
Minimum contrast 30 10 10
Module size (ECC 200, QR Code, Micro QR Code, Aztec Code) 6 ... 20 pixels >= 4 pixels (for sharp images >= 2) >= 4 pixels (for sharp images >= 1)
Module size (PDF417) - Width 3 ... 15 pixels >= 3 pixels (for sharp images >= 2) >= 3 pixels (for sharp images >= 1)
Module size (PDF417) - Aspect ratio 1 ... 4 1 ... 10 1 ... 10
'small_modules_robustness' 'low' 'low' 'high'
Module shape no or small gap between adjacent modules (< 10% of the module size) bigger gaps are also possible, up to 50% of the module size (only for ECC 200, QR Code, Micro QR Code, and Aztec Code) bigger gaps are also possible, up to 50% of the module size (only for ECC 200, QR Code, Micro QR Code, and Aztec Code)
Maximum slant (ECC 200) 10 degree (0.1745) 30 degree (0.5235) 30 degree (0.5235)
Module grid (ECC 200) fixed any (fixed or variable) any (fixed or variable)
'finder_pattern_tolerance' (ECC 200) 'low' 'low' 'any'
'contrast_tolerance' (ECC 200) 'low' 'low' 'any'
'finder_pattern_tolerance' (Aztec Code) 'low' 'high' 'high'
Number of position detection patterns that are necessary for generating a new candidate (QR Code) 3 2 2


    HOperatorSet.CreateDataCode2dModel("Data Matrix ECC 200", "default_parameters", "maximum_recognition", hv_DataCodeHandle)

搜尋能力
standard_recognition < enhanced_recognition < maximum_recognition

當然搜尋時間也是隨著增加

 

2. 搜尋二維條碼 find_data_code_2d(Image : SymbolXLDs : DataCodeHandle, GenParamNames, GenParamValues : ResultHandles, DecodedDataStrings)
Image:搜尋的影像
SymbolXLDs:搜尋出的條碼輪廓
DataCodeHandle:建立條碼的搜尋控制
GenParamNames:一般為空值/或訓練模式
GenParamValues:一般為空值/訓練模式時可設定訓練參數種類
ResultHandles:結果控制
DecodedDataStrings:搜尋結果字串

一般模式搜尋

HOperatorSet.FindDataCode2d(Hbm, ho_SymbolXLDs, hv_DataCodeHandle, New HTuple(), New HTuple(), hv_ResultHandles, hv_DecodedDataStrings)

訓練模式搜尋

HOperatorSet.FindDataCode2d(Hbm, ho_SymbolXLDs, hv_DataCodeHandle, New HTuple("train"), New HTuple("all"), hv_ResultHandles, hv_DecodedDataStrings)

all 是訓練所有參數,可指定特定參數 訓練,請參照 Halcon 本身的參數說明

一般來說 all 就很好用的

 

 

3.參數設定 set_data_code_2d_param( : : DataCodeHandle, GenParamNames, GenParamValues : )

常見可設定的參數


polarity : 影像級姓
module_gap:二維條碼點相鄰狀況  no:相連   small:小距離  big:大距離
contrast_min:條碼與影像對比
timeout:搜尋時間上限
persistence:設定某些搜尋結果存在時間    -1 不紀錄品質檢測      0 :臨時             1:永久
contrast_tolerance : 條碼內部模糊對比容忍度

更多資料請看 Halcon 本身的說明
不同的條碼會有不一樣種類的參數可以設定

 

4.參數存檔 write_data_code_2d_model( : : DataCodeHandle, FileName : )

將建立好 或 設定 或 訓練好的 Handle 存檔

    HOperatorSet.WriteDataCode2dModel(hv_DataCodeHandle, New HTuple("檔案路徑"))

 

5.參數讀檔 read_data_code_2d_model( : : FileName : DataCodeHandle)

    HOperatorSet.ReadDataCode2dModel(New HTuple( "檔案路徑" ), hv_DataCodeHandle)

 

6.條碼品質檢測 get_data_code_2d_results( : : DataCodeHandle, CandidateHandle, ResultNames : ResultValues)

此Function 可取得很多資料,這邊主要以說明  品質檢測為主

Halcon 主要提供兩種品質檢測 isoiec15415  與  aimdpm  兩者的品質檢測
  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_isoiec15415", Quality) : 取得isoiec15415的品質資料    值  0 ~ 4  
  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_isoiec15415_labels", QALabels) : 取得isoiec15415的品質項目名稱
  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_isoiec15415_values", QAValues) : 取得isoiec15415的品質直接量測數據

  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_aimdpm_1_2006", Quality) : 取得 aimdpm 的品質資料    值  0 ~ 4  
  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_aimdpm_1_2006_labels", QALabels) : 取得 aimdpm 的品質項目名稱
  HOperatorSet.GetDataCode2dResults(CodeHandle, resHandle, "quality_aimdpm_1_2006_values", QAValues) : 取得 aimdpm 的品質直接量測數據

 

其中 Quality 的分數可以轉換成 ANSI 的 A B C D E F

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Rh 的頭像
    Rh

    程式狂想曲

    Rh 發表在 痞客邦 留言(0) 人氣()