QQ登录

只需一步,快速开始

2.4 halcon 上位机实现不同光照下二维码的读取

[ 复制链接 ]
在halcon中二维码的识别与一维码类型,可以在识别前设置一些参数 和不同的码制。有什么码制和参数,大多时候都是按F1参阅手册便可,最主要的是如何用固有思路实现解码。
总的来说二维码的识别流程和一维码相似为:
1 创建 条码模型。2 设置条码参数。3 条码识别。4 识别结果显示。

下面实例 实现在不同光线下识别QR Code类型的二维码。

2.4 halcon 上位机实现不同光照下二维码的读取

2.4 halcon 上位机实现不同光照下二维码的读取

  1. *首先创建一个条码句柄,然后就是从图片读取条码数据与显示。
  2. *要注意的是二维码使用标准的参数是不能够识别的。可能的原因有
  3. *对比度太底,二维码在黑色区域用白色打印,二维码太大,>48*48.二维码是通过点阵形式打印。
  4. *对于找不到的二维码,可以通过调节参数实现查找。
  5. dev_update_off ()
  6. dev_close_window ()
  7. ImageFiles := 'datacode/qrcode/qr_workpiece_'
  8. ImageNum := 9
  9. *读取图片保存到变量Image
  10. read_image (Image, ImageFiles + '01')
  11. dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
  12. set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
  13. dev_set_line_width (3)
  14. dev_set_color ('green')
  15. * 第一步创建QR Code类型二维码句柄,在后面使用。
  16. create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
  17. * 第二步从图片读取数据,这里循环加载不同图片,在这些图片上读取条码信息,并显示。
  18. for Index := 1 to ImageNum by 1
  19.     read_image (Image, ImageFiles + Index.2d')
  20.     *开始在图片上查找条码,Image为输入图片, SymbolXLDs为输出条码区域,亚像素单位,
  21.     *DataCodeHandle, 为上面创建的二维码句柄,[], [], 为检测方式参数名与参数值,这里不需要留空。
  22.     *ResultHandles为输出结果句柄, DecodedDataStrings为输出结果字符串。
  23.     find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
  24.     dev_display (Image)
  25.     dev_display (SymbolXLDs)
  26.     disp_message (WindowHandle, 'Image ' + Index + ' of ' + ImageNum, 'window', 12, 12, 'black', 'true')
  27.     disp_message (WindowHandle, DecodedDataStrings, 'window', 40, 12, 'black', 'true')
  28.     Message := 'No data code found.'
  29.     Message[1] := 'The symbol could not be found with the standard'
  30.     Message[2] := 'default setting. Please adjust the model parameters'
  31.     Message[3] := 'to read this symbol.'
  32.     *
  33.     *如何读取成功就显示出结果
  34.     if (|DecodedDataStrings| == 0)
  35.         disp_message (WindowHandle, Message, 'window', 40, 12, 'red', 'true')
  36.     endif
  37.     *
  38.     *查检图片是否加载完
  39.     if (Index < ImageNum)
  40.         disp_continue_message (WindowHandle, 'black', 'true')
  41.         stop ()
  42.     endif
  43. endfor
  44. *
  45. * 清理条码句柄,释放资源。
  46. clear_data_code_2d_model (DataCodeHandle)
复制代码







回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索