Halcon下二維碼識別與聯合C#編程

前面寫到過用開源庫ZXing做二維碼的識別與生成,今天以Halcon做一個簡單的二維碼識別程序,並聯合C#進行編程。

Halcon下二維碼識別比較簡單,主要分為兩個步驟;

第一步:創建二維數據代碼類的二維數據代碼模型,並返回一個句柄。用到的算子:create_data_code_2d_model (Operator),

算子參數:

1、SymbolType:二維條碼的類型,默認值是:Data Matrix ECC 200;可選值有( 'Aztec Code', 'Data Matrix ECC 200', 'GS1 Aztec Code', 'GS1 DataMatrix', 'GS1 QR Code', 'Micro QR Code', 'PDF417', 'QR Code'),我們此次識別QR二維碼,選擇值:'QR Code';

2、GenParamName:可以為二維數據代碼模型調整的通用參數的名稱。這裡選'default_parameters';

3、GenParamVlue:可以為二維數據代碼模型調整的通用參數的值,這裡選'enhanced_recognition'增強識別;

4、DataCodeHandle:用於使用和訪問二維數據代碼模型的句柄;下一步識別讀取信息時使用;

第二步:搜索並讀取圖像中的二維碼,用到的算子:find_data_code_2d(Operator)

算子參數:

1、Image:要識別的二維碼圖像。

2、SymbolXLDs:圍繞成功解碼的數據代碼符號的XLD輪廓。輪廓點的順序反映了檢測到的符號的方向。輪廓從左上角開始並順時針繼續,如下圖:

3、DataCodeHandle:用於使用和訪問二維數據代碼模型的句柄;

4、GenParamName:用於控制運算符行為的(可選)參數的名稱;此處應用Default value: []

5、GenParamValue:可選泛型參數的值;此處應用Default value: []

6、ResultHandles:所有成功解碼的二維數據代碼符號的句柄;

7、DecodedDataStrings:解析到的二維碼信息。

實際應用:識別下面的圖片中二維碼:

1、Halcon代碼如下:

<code>dev_update_off () dev_close_window () *讀取一張圖片,並打開一個窗口,將窗口大小設置成適合此圖片大小 read_image (Image, '二維碼圖片文件位置') dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_line_width (3) dev_set_color ('green') disp_continue_message (WindowHandle, 'black', 'true') * * 步驟1:創建數據代碼模型 * ---------------------------------------------------- * 創建二維數據代碼類的二維數據代碼模型 * 創建二維數據代碼類“二維碼”的二維數據代碼模型。 * 運算符返回二維數據代碼模型的句柄,該句柄可用於對數據代碼的所有後續操作。 create_data_code_2d_model ('QR Code', 'default_parameters', 'enhanced_recognition', DataCodeHandle) * * 步驟二: 讀取二維碼數據 * ---------------------------------------------------- * 搜索並讀取圖像中的二維碼,並顯示找到的二維碼信息 read_image (Image, '二維碼圖片文件位置') find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings) * * 顯示結果 dev_display (Image) dev_display (SymbolXLDs) disp_message (WindowHandle, DecodedDataStrings, 'window', 40, 12, 'black', 'true') Message := 'No data code found.' Message[1] := 'The symbol could not be found with the standard' Message[2] := 'default setting. Please adjust the model parameters' Message[3] := 'to read this symbol.' * 如果沒有發現二維碼時顯示提示 if (|DecodedDataStrings| == 0) disp_message (WindowHandle, Message, 'window', 40, 12, 'red', 'true') Endif/<code>

2、Halcon聯合C#編程,效果如下:

3、完整代碼已上傳,關注後私信回覆:“Halcon二維碼”獲取,感謝您的閱讀和關注;