halcon学习笔记1-一维码检测

halcon学习笔记-一维码(条形码)检测

拿到图像,一般先要对图像做预处理,当然你的图像质量很高就可以不用做了。常用的方法有:
(1)scale_image,灰度图像灰度值缩放(很好用)
(2)emphasize,图像锐化,突出图像的轮廓(高频)部分
(3)zoom_image_factor,图像缩放

用到的基本算子有:
create_bar_code_model():创建一维码模型
GenParamName:设置一维码通用参数的的字段
GenParamValue:设置一维码通用参数的值(对应GenParamName)
BarCodeHandle:模型句柄

一般这个算子是不用改的,用默认的就行,reate_bar_code_model ([], [], BarCodeHandle),如果遇到特殊情况,也可以在后面的set_bar_code_param()进行参数的设置

set_bar_code_param():设置(更改)模型参数
BarCodeHandle:模型句柄
GenParamName:设置一些寻找一维码的参数字段
GenParamValue:设置一些寻找一维码的参数的值(对应GenParamName)

这里的参数字段比较多,就不一一列出了,一般常用的有
timeout:超时时间,以毫秒为单位,超过设定的时间就算超时

element_size_min:条码元素最小size,(元素:一维码里单独的条码)范围是1-64,默认是2,如果一维码的元素实在太小了,可以适当调小点

stop_after_result_num:成功解码后码的数量如果达到这个设定的值,就停止解码,值的范围是0-n,如果码太多了,你不需要解那么多,可以设定一个合适的值,减少运行时间

check_char:这个参数是用于校验一维码的正确性,他有三个值[‘absent’, ‘present’, ‘preserved’],默认是第一个,一般是会将这个参数设置为present。

find_bar_code():查找给定图像的一维码,并返回数据
Image:输入图像,指定在此图像里查找一维码
SymbolRegions:返回一维码的区域,没有找到为空
BarCodeHandle:一维码模型句柄
CodeType:查找指定的一维码类型
DecodedDataStrings:所有成功解码的数据串

将CodeType设置为’auto’,自动检测所有类型的码,如果你知道码的类型,将其设置为指定的类型,运行速度会比’auto’快。

代码:


list_files ('C:/Users/10644/Desktop/一维码', ['files','follow_links','recursive'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
	*循环读图 不是灰度图,要将其转为灰度图(rgb1_to_gray)
    read_image (Image, ImageFiles[Index])
    *图像锐化
    emphasize (Image, ImageEmphasize, 10, 10, 1)
    *图像放大1.5倍
    zoom_image_factor (ImageEmphasize, ImageZoomed, 1.5, 1.5, 'constant')
    *创建一维码模型
    create_bar_code_model ([], [], BarCodeHandle)
    *设置超时500ms
    set_bar_code_param (BarCodeHandle, 'timeout', 500)
    *设置校验模式
    set_bar_code_param (BarCodeHandle, 'check_char', 'present')
    *自动检测任何类型的一维码
    find_bar_code (ImageZoomed, SymbolRegions, BarCodeHandle, 'auto', DecodedDataStrings)
    *拿到检测到的一维码的类型
    get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', BarCodeResults)
    *将解码的数据串显示在窗体上
    disp_message (200000, BarCodeResults + '\t' + DecodedDataStrings, 'image', 12, 12, 'black', 'green')
    *获取码在图上的坐标及面积
    area_center_gray (SymbolRegions, ImageZoomed, Area, Row, Column)
    *在窗体上显示坐标及面积
    disp_message (200000, 'Area:' + Area + '\tRow:' + Row + '\tColumn:' + Column,'iamge',12,500,'black','green')
endfor

效果图:

在这里插入图片描述

萌新学习中,有什么不对的地方请多多指点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值