[机器视觉]halcon十二 条码识别、字符识别之二维码识别
流程
获取图像-》创建模型-》条码识别-》清除模型
注意
halcon默认是读白底黑字的二维码,如果你的码是黑底白字的要反一下。
算子
create_data_code_2d_model : 创建模型
set_data_code_2d_param : 设置相应参数
get_data_code_2d_param : 获取相应参数
query_data_code_2d_params : 查询参数
find_data_code_2d : 查找条码
get_data_code_2d_objects: 获取二维码读取区域
get_data_code_2d_result : 获取二维码读取内容
clear_data_code_2d_model : 销毁模型
write_data_code_2d_model : 保存二维码模板
read_data_code_2d_model : 读取二维码模板
结果
代码
单文件检测
*读取图片
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/datacode/qrcode/qr_generated.png')
*创建模型
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
*查找条码
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
*获取二维码读取内容
get_data_code_2d_results (DataCodeHandle, 'all_candidates', 'status', ResultValues)
*获取二维码读取区域
get_data_code_2d_objects (DataCodeObjects, DataCodeHandle, 'all_candidates', 'candidate_xld')
*销毁模型
clear_data_code_2d_model (DataCodeHandle)
多文件检测
*获取窗口句柄对象
dev_get_window (WindowHandle)
*创建模型 这里使用默认参数
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
*图片文件夹
imageDir := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/datacode/qrcode/'*获取文件列表
list_files (imageDir, ['files','follow_links','recursive'], ImageFiles)*可以用for算子把文件一个一个打开
for Index := 0 to |ImageFiles| - 1 by 1*从文件集合中获取指定索引的数据imagePath := ImageFiles[Index] *判断文件是否存在,存在返回true,否则返回false*imagePath 输入参数:要判断的文件路径*FileExists 输出参数: 输出文件是否存在,存在返回true,否则返回falsefile_exists (imagePath, FileExists)disp_message (WindowHandle, '图片-路径:'+imagePath, 'window', 12, 12, 'black', 'true')if (FileExists) *读取图片read_image (Image, imagePath)*查找条码find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)*获取二维码读取内容get_data_code_2d_results (DataCodeHandle, 'all_candidates', 'status', ResultValues)*获取二维码读取区域get_data_code_2d_objects (DataCodeObjects, DataCodeHandle, 'all_candidates', 'candidate_xld')elsedisp_message (WindowHandle, '图片-不存在->路径:'+imagePath, 'window', 12, 12, 'black', 'true')endif
endfor *销毁模型
clear_data_code_2d_model (DataCodeHandle)