halcon二维码识别简单案例
目录
二维码种类
编辑 halcon 二维码识别调用算子步骤
1.创建模型——create_data_code_2d_model( SymbolType, GenParamName, GenParamValue ,DataCodeHandle)
2.设置参数 ——set_data_code_2d_param( DataCodeHandle, GenParamName, GenParamValue )
3.查找二维码——find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, 'train', 'all', ResultHandles, DecodedDataStrings)
4.清除模板——clear_data_code_2d_model (DataCodeHandle)
实例1:找一个二维码,测试其识别的结果是否正确。
效果图1
实例2
效果图2
二维码种类
常见类型:QR Code二维码、 Data Matrix二维码。
其他:Aztec Code二维码、Maxi Code二维码、Vericode二维码、PDF417二维码、Ultracode二维码、Code 49二维码、Code 16K二维码。
halcon 二维码识别调用算子步骤
1.创建模型——create_data_code_2d_model( SymbolType, GenParamName, GenParamValue ,DataCodeHandle)
参数1
SymbolType
(输入控制) 字符串(字符串)→
二维数据代码的类型。
默认值: “数据矩阵 ECC 200”
值列表:“Aztec Code”、“Data Matrix ECC 200”、“GS1 Aztec Code”、“GS1 DataMatrix”、“GS1 QR Code”、“Micro QR Code”、“PDF417”、“QR Code”
参数2
GenParamName
(输入控制) 属性名(-array)(字符串)→
可以为 2D 数据代码模型调整的通用参数的名称。
默认值: []
值列表:“additional_levels”、“candidate_selection”、“contrast_min”、“contrast_tolerance”、“default_parameters”、“finder_pattern_tolerance”、“mirrored”、“model_type”、“module_aspect”、“module_aspect_max”、“module_aspect_min”、“module_gap ” ' , 'module_gap_max' , 'module_gap_min' , 'module_grid' , 'module_size' , 'module_size_max', 'module_size_min' , 'module_width', 'module_width_max' , 'module_width_min' , 'persistence' , 'polarity' , 'position_pattern_min' , 'slant_max' , 'small_modules_robustness' , 'strict_model' , 'strict_quiet_zone' , 'symbol_cols' , 'symbol_cols_max' , ' symbol_cols_min' , symbol_rows','symbol_rows_max','symbol_rows_min','symbol_shape','symbol_size','symbol_size_max' , 'symbol_size_min' ,'超时','版本','version_max','version_min'
参数3
GenParamValue
(输入控制) 属性值(-array)(字符串/整数/实数)→
可以为 2D 数据代码模型调整的通用参数的值。
默认值: []
建议值:“standard_recognition”、“enhanced_recognition”、“maximum_recognition”、“yes”、“no”、“any”、“dark_on_light”、“light_on_dark”、“square”、“rectangle”、“small”、“big” , 'fixed' , 'variable' , 'low' , 'high' , 'default' , 'extensive', 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 30, 50, 70, 90, 12, 14, 16, 18, 20, 22, 24, 26, 32, 36, 40, 44, 48, 52, 64, 72, 80, 88, 96, 104, 120, 132, 144
参数4
DataCodeHandle
(输出控制) datacode_2d (句柄)→
用于使用和访问二维数据代码模型的句柄。
2.设置参数 ——set_data_code_2d_param( DataCodeHandle, GenParamName, GenParamValue )
参数1
DataCodeHandle
(input_control,状态被修改) datacode_2d (句柄)→
二维数据代码模型的句柄。
参数2
GenParamName
(输入控制) 属性名(-array)(字符串)→
应为 2D 数据代码调整的通用参数的名称。
默认值: '极性'
值列表:'abort'、'additional_levels'、'candidate_selection'、'contrast_min'、'contrast_tolerance'、'decoding_scheme'、'default_parameters'、'discard_undecoded_candidates'、'finder_pattern_tolerance'、'format'、'mirrored'、'model_type ' , 'module_aspect' , 'module_aspect_max' , 'module_aspect_min' , 'module_gap' , 'module_gap_max' , 'module_gap_min' , 'module_grid', 'module_size' , 'module_size_max' , 'module_size_min' , 'module_width' , 'module_width_max' , 'module_width_min' , 'persistence' , 'polarity' , 'position_pattern_min' , 'quality_isoiec15415_aperture_size' , 'slant_max' , ' small_modules_robustness ' strict_model','strict_quiet_zone','string_encoding','symbol_cols','symbol_cols_max', 'symbol_cols_min' , 'symbol_rows', 'symbol_rows_max' , 'symbol_rows_min' , 'symbol_shape' , 'symbol_size' , 'symbol_size_max' , 'symbol_size_min' , 'timeout' , 'trained' , 'version' , 'version_max' , 'version_min'
参数3
GenParamValue
(输入控制) 属性值(-array)(字符串/整数/实数)→
为 2D 数据代码调整的通用参数的值。
默认值: 'light_on_dark'
建议值:“standard_recognition”、“enhanced_recognition”、“maximum_recognition”、“yes”、“no”、“any”、“dark_on_light”、“light_on_dark”、“square”、“rectangle”、“small”、“big” , 'fixed' , 'variable' , 'low' , 'high' , 'default' , 'extensive' , 'utf8' ,“语言环境”,“原始”, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 30, 50, 70, 90, 12, 14, 16, 18, 20, 22, 24, 26, 32, 36, 40, 44, 48, 52, 64, 72, 80, 88, 96, 104, 120, 132, 144
3.查找二维码——find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, 'train', 'all', ResultHandles, DecodedDataStrings)
参数1
Image
(输入对象) 单通道图像→
对象(字节)
输入图像。如果图像具有缩减域,则数据代码搜索将缩减到该域。这通常会减少操作员的运行时间。但是,如果数据代码未完全位于域内,则可能无法正确找到数据代码。在极少数情况下,可能会在域之外找到数据代码。如果这些结果是不希望的,则必须随后将其消除。
参数2
SymbolXLDs
(输出对象) xld_cont(-array)→
对象
get_data_code_2d_results
SymbolXLDs
参数3
DataCodeHandle
(input_control,状态被修改) datacode_2d (句柄)→
二维数据代码模型的句柄。
GenParamName
(输入控制) 属性名(-array)(字符串)→
用于控制操作员行为的(可选)参数的名称。
默认值: []
值列表:'specific_parallelization'、'stop_after_result_num'、'symbol_search'、'train'
GenParamValue
(输入控制) 属性值(-array)(整数/实数/字符串)→
可选泛型参数的值。
默认值: []
建议值:“all”、“model_type”、“symbol_size”、“version”、“module_size”、“small_modules_robustness”、“module_shape”、“polarity”、“mirrored”、“contrast”、“candidate_selection”、“module_grid” , 'finder_pattern_tolerance' , 'contrast_tolerance' , 'additional_levels' , 'image_proc ' , '基本的' , '默认' , 1, 2, 3, '启用' , '禁用'
ResultHandles
(输出控制) 整数(-数组)(整数)→
所有成功解码的二维数据代码符号的句柄。
DecodedDataStrings
(输出控制) 字符串(-数组)(字符串)→
图像中所有检测到的二维数据码符号的解码数据串。
4.清除模板——clear_data_code_2d_model (DataCodeHandle)
参数
DataCodeHandle
(input_control,状态被修改) datacode_2d (句柄)→
二维数据代码模型的句柄。
实例1:找一个二维码,测试其识别的结果是否正确。
实例代码如下:
dev_close_window ()
dev_open_window (0, 0, 300, 281, 'black', WindowHandle)
read_image (Image, 'E:/桌面/ccc/pingduoduo.jpg')
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
*set_data_code_2d_param (DataCodeHandle, 'polarity', 'light_on_dark')
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, 'train', 'all', ResultHandles, DecodedDataStrings)
disp_message (WindowHandle, '识别结果:'+DecodedDataStrings, 'window', 12, 12, 'black', 'true')
clear_data_code_2d_model (DataCodeHandle)
效果图1
实例2
read_image (Image, 'E:/桌面/ccc/hesuan.jpg')
lib_find_barcode (Image, Time, Code_Type, CodeResult)
**————————————lib_find_barcode(Image, Time, Code_Type, CodeResult)函数 ———————————————
*计数器
_index:=0
*读码超时时间
_timeOut:=1000
*读码类型
_codeType:=[]
*读码结果
_codeData:=[]
*已解码的区域
gen_empty_obj (_EmptyObject)
*二维码类型
_codeMode:=['Aztec Code', 'Data Matrix ECC 200', 'GS1 Aztec Code', 'GS1 DataMatrix', 'GS1 QR Code', 'Micro QR Code', 'PDF417', 'QR Code']
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
count_seconds (T1)
for i := 0 to |_codeMode|-1 by 1create_data_code_2d_model (_codeMode[i],[], [],DataCodeHandle)*设置超时时间set_data_code_2d_param (DataCodeHandle, 'timeout', _timeOut)*防止误识别设置,因为某些二维码模型没有这个属性,会报错所以try以下tryset_data_code_2d_param (DataCodeHandle, 'strict_quiet_zone', 'yes')catch (Exception)continueendtry*开始识别 find_data_code_2d (Image,SymbolXLDs,DataCodeHandle, 'stop_after_result_num',1000,ResultHandles, DecodedDataStrings)dev_display (SymbolXLDs)count_obj (SymbolXLDs, Number)if (Number)*存读码类型for j := 1 to Number by 1*存解码类型_codeType[_index]:=_codeMode[i]*存解码数据_codeData[_index]:=DecodedDataStrings[j-1]_index:=_index+1select_obj (SymbolXLDs, ObjectSelected, j)*存二维码区域concat_obj (_EmptyObject, ObjectSelected, _EmptyObject)endforendif*清除识别缓存clear_data_code_2d_model(DataCodeHandle)
endfor
count_seconds (T2)
Time:=T2-T1
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
* write_string (WindowHandle, '总耗时:'+Time)
disp_message (WindowHandle, ['总耗时:'+Time,'二维码类型:'+_codeType,'识别结果:'+DecodedDataStrings], 'window', 12, 12, 'black', 'false')
CodeResult:=DecodedDataStrings
Code_Type:=_codeType
return ()
效果图2
总结:本篇文字简单介绍了二维码类型,用halcon识别二维码的步骤及相关实例代码,代码后期还可以优化,这个是最简单版本。
关键点:要看二维码类型,不然无法读取二维码。
halcon二维码识别简单案例相关推荐
- Halcon二维码识别,多二维码识别,附代码及常见算子解释
前言 二维码作为机器视觉常见的检测场景,常常用于产品类型检测,MES系统对接等场景,不同于常见的halcon图像处理流程,二维码识别不需要做图像分割便可以很快的完成二维码区域定位与二维码检测.这里对常 ...
- Halcon 二维码识别QR
图片资料 链接:https://pan.baidu.com/s/1JSl0mIWW_IvRacywpp4hHg 提取码:93mf 二维码识别过程 1.创建二维码模型 create_data_code_ ...
- halcon二维码识别(完整板)
*计数器 _index:=0 *读码超时时间 _timeOut:=1000 *读码类型 _codeType:=[] *读码数据 _codeData:=[] *已解码的区域 gen_empty_obj ...
- Halcon一维码和二维码识别
Halcon一维码和二维码识别 一.Halcon一维码识别 二.Halcon二维码识别 一.Halcon一维码识别 1.一维码的识别过程: (1).创建条码模型create_bar_code_mode ...
- Halcon图像的一维码二维码识别
7.1识别一维码的流程和方法 一维码的码制: 一维条码即指条码条和空的排列规则,常用的一维码的码制包括:EAN 码.39 码. 交叉 25 码.UPC 码.128 码.93 码,ISBN 码,及 Co ...
- 【第 07 章 基于主成分分析的人脸二维码识别MATLAB深度学习实战案例】
基于主成分分析的人脸二维码识别MATLAB深度学习实战案例 人脸库 全套文件资料目录下载链接–>传送门 本文全文源码下载[链接–>传送门] 如下分析: 主文件 function varar ...
- halcon例程学习 一维码、二维码识别
1.一维条码 一维条码:由一组规则排列的条.空以及对应的字符组成的标记,"条"指对光线反射率较低的部分,"空"指对光线反射率较高的部分,这些条和空组成的数据表达 ...
- 简单的二维码识别(实现代码)
一.倒依赖 //二维码识别compile 'com.acker:simplezxing:1.5' 二.在Activity的Xml中 <Buttonandroid:id="@+id/mB ...
- 基于halcon的简易二维码识别
二维码识别 原图 代码 结果 原图 代码 dev_update_off () dev_close_window () read_image (Image, '111.png') get_image_s ...
最新文章
- 华为:5G技术前景堪忧,运营商将很难从5G赚钱
- ansible笔记(11):初识ansible playbook(二)
- redis 永不过期 java_死磕 Java
- flink的TimeCharacteristic(转载)
- 计算机对环境的影响的案例,计算机环境下的呈现方式对学生样例学习的影响
- javascript布尔值_JavaScript布尔值通过上法庭进行解释
- Netty是如何实现TCP心跳机制与断线重连的
- 基于GPU的粒子系统
- 6. /proc/cpuinfo
- Android自定义头部悬浮,快速索引ListView
- Repast Statecharts
- 大华摄像机初始化工具ConfigTool
- snipaste截图软件安装各种问题解决办法
- 计算机网络的社会环境分析_2020年昆仑银行分行社会招聘工作人员公告
- 《环太平洋》(pacific rim)观后感
- mysql中事务id,有啥用?
- ppt文字提取转word
- [转载] 信息系统项目管理师视频教程——29 信息系统监理
- JewelCAD Pro 珠宝设计软件
- 计算机毕业设计ssm校园物品交易系统ua3tg系统+程序+源码+lw+远程部署
热门文章
- 同步DC-DC降压型LED驱动IC
- Klocwork对Jbuild工程测试实战
- A股level2委托队列十档AI量化行情数据对比
- 网警支队RFID机房资产管理系统解决方案-新导智能
- 【综合】简单加解密——寻找序列号
- 猕猴桃输入法高手指南
- 导入android源码有错,R.java文件不能自动生成解决方法 http://caizi12.iteye.com/blog/975125
- 读《数学辞海》编辑委员会之《数学辞海 第六卷》
- python实现二级页面带自动翻页功能,三级页面爬虫苏宁图书。
- 心里有了阴影,求阴影部分的面积