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轮廓。轮廓点的顺序反映了检测到的符号的方向。轮廓从左上角开始并顺时针继续,如下图:

Halcon下二维码识别与联合C#编程

3、DataCodeHandle:用于使用和访问二维数据代码模型的句柄;

4、GenParamName:用于控制运算符行为的(可选)参数的名称;此处应用Default value: []

5、GenParamValue:可选泛型参数的值;此处应用Default value: []

6、ResultHandles:所有成功解码的二维数据代码符号的句柄;

7、DecodedDataStrings:解析到的二维码信息。

实际应用:识别下面的图片中二维码:

Halcon下二维码识别与联合C#编程

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#编程,效果如下:

Halcon下二维码识别与联合C#编程

3、完整代码已上传,关注后私信回复:“Halcon二维码”获取,感谢您的阅读和关注;


分享到:


相關文章: