Halcon二维码识别

摘要

  功能

识别二维码

  基本步骤如下

和一维码识别步骤基本一致:
1.图像采集
2.预处理
3.识别条码:
(1)创建二维码模型
(2)设置参数(非必要)
(3)解码
4.识别并显示
5.清除模型

Halcon代码:黑底白码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

*1 加载图像
read_image (Image, '二维码.jpg')

*2 预处理
invert_image (Image, ImageInvert)

*3 识别二维码
create_data_code_2d_model ('Data Matrix ECC 200', [], [], DataCodeHandle)
find_data_code_2d (ImageInvert, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)

*4 显示
dev_display (Image)
set_display_font (WindowHandle, 30, 'mono', 'true', 'false')
disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')

*5 清楚模型
clear_data_code_2d_model (DataCodeHandle)

在这里插入图片描述

Halcon代码:点状二维码

dev_close_window ()
ImageFiles := 'datacode/dotcode/dotcode_mvtec_'
ImageNum := 5
read_image (Image, ImageFiles + '01')
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')


* Step 1: Create data code model.
create_data_code_2d_model ('DotCode', [], [], DataCodeHandle)

* Step 2: Read the data codes.
for Index := 1 to ImageNum by 1
    read_image (Image, ImageFiles + Index$'.2d')
    find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
    
    * Display the results.
    dev_display (Image)
    dev_display (SymbolXLDs)
    dev_disp_text (DecodedDataStrings, 'window', 40, 12, 'black', [], [])
endfor

Halcon代码:同时读两个亮暗不一的二维码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*1 加载图像
read_image (Image, '4二维码瓶盖.bmp')

*2 预处理
emphasize (Image, ImageEmphasize, 15,15, 1.5)

*3 识别二维码
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
find_data_code_2d (ImageEmphasize, SymbolXLDs, DataCodeHandle, 'stop_after_result_num', 2, ResultHandles, DecodedDataStrings)

*4 显示
dev_display (Image)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'true')

*5 清楚模型
clear_data_code_2d_model (DataCodeHandle)

在这里插入图片描述

Halcon自带例程

qrcode_with_common_proproblems.hdev读取模糊、打印丢失/增长或在行和/或列方向严重变形的二维码符号
qrcode_simple.hdev读取二维码类型的数据码
qrcode_optimized_settings.hdev优化读取QR码类型的二维数据码的参数
qrcode_deformed.hdev读取透视扭曲和局部变形的QR码符号
print_quality_aimdpm_1_2006.hdev使用AIM DPM-1-2006标准检查二维数据代码的打印质量
pdf417_simple.hdev读取pdf417类型的二维数据代码
pdf417_optimized_settings.hdev优化读取pdf417类型的各种二维数据代码的参数
pdf417_bottle.hdev读取PDF 417类型的二维数据代码 par_start.hdev使用多线程并行读取条形码和数据代码
micro_qr_strict_quiet_zone.hdev使用数据代码参数“strict_quiet_zone”
micro_qr_simple.hdev读取micro-qr类型的二维数据码
micro_qr_optimized_settings.hdev优化读取micro-qr类型二维数据码的参数
gs1_data_codes.hdev比较gs1数据码的解码结果,如果它们分别被解码为gs1和非gs1符号
ecc200_training.hdev训练一个二维数据代码模型,将模型写入文件,然后读取模型
ecc200_small_modules_robustness.hdev演示如何使用非常小的模块读取ecc200符号
ecc200_simple.hdev读取ecc200类型的二维数据码
ecc200_print_quality_modules.hdev检查ecc200数据代码各个模块的打印质量
ecc200_print_quality_intermedia_results.hdev读取ecc200数据代码时显示中间结果
ecc200_print_quality.hdev检查ecc200数据代码的打印质量
ecc200_optimized_settings.hdev优化读取ecc200类型二维数据码的参数
ecc200_finder_pattern_tolerance.hdev演示如何读取具有受干扰查找模式的ecc200符号
ecc200_direct_mark_quality_semi_t10.hdev检查ecc200数据代码的直接标记质量(semi t10)
ecc200_contrast_terminance.hdev读取具有局部对比度变化的ecc200类型的二维数据代码
dotcode_simple.hdev读取dotcode类型的二维数据代码
dotcode_optimized_settings.hdev优化读取dotcode类型的二维数据代码的参数
aztec_simple.hdev读取aztec类型的二维数据代码
aztec_optimized_settings.hdev优化读取aztec类型二维数据代码的参数
2d_data_codes_rectify_symbol.hdev纠正ECC200类型的倾斜符号
2d_data_codes_minimize_noise.hdev最小化ECC200类型符号中的噪声
2d_data_codes_minimize_module_gaps.hdev最小化ECC200类型符号中的大间隙
2d_data_codes_default_settings.hdev在标准、增强和最大模式下读取Aztec、ECC200、PDF417、QR、Micro-QR和Dotcode类型的二维数据码
2d_data_codes_data_access.hdev尝试读取ECC200类型的符号时访问中间结果
2d_data_codes_arbitraryy_distortions.hdev演示ECC200类型的失真符号

更多详情了解:https://blog.csdn.net/qq_32015315/article/details/141663063

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值