Halcon项目之检测印刷数字

一、描述

检测下列图像中硬刷数字是否完好。

二、方法

通过处理一个完好的印刷图像,将其中的字体当做模版,通过模版去比较其他图片是否完好(通过差值的面积大小来判定)。

模版图片如下:

运行结果

三、Halcon代码

*读入标准模板图片(图片名字为standard.bmp)
read_image (Image, './standard.bmp')
*设置图像窗口
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
*选中模板区域(ROI)
gen_rectangle1 (ROI_0, 201, 244, 385, 526)
reduce_domain (Image, ROI_0, ImageReduced)
*选中模板区域数字
threshold (ImageReduced, Regions, 106, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 163.12, 10000)
union1 (SelectedRegions, RegionUnion)
*求模板区域坐标
area_center (RegionUnion, Areastandard, Rowstandard, Columnstandard)
*扣取模板区域图像,创建模板需要的是图像,不是区域
reduce_domain (ImageReduced, RegionUnion, ImageReduced1)
*创建模板
create_shape_model (ImageReduced1, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*读入图像路径,循环遍历每个图像
list_files ('./', ['files','follow_links'], 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
    read_image (Image, ImageFiles[Index])
    *模板匹配
    find_shape_model (Image, ModelID, 0, rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
     *判断匹配是否成功
    if (|Score| > 0)
        *搜寻当前图像匹配成功的区域并求它的坐标和角度
        dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, 1, 1, 0)
        *将模板区域仿射变换到匹配成功的区域
        vector_angle_to_rigid (Rowstandard, Columnstandard, 0, Row, Column, Angle, HomMat2D)
        affine_trans_region (RegionUnion, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
        dev_display (Image)
       *blob方法提取当前图像的数字,并变成一个联通域
        threshold (Image, Regions1, 106, 255)
        connection (Regions1, ConnectedRegions1)
        select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 163.12, 10000) 
        union1 (SelectedRegions1, RegionUnion1)
        *仿射变换后的模板区域与当前区域求差集,即缺陷部分
        difference (RegionAffineTrans, RegionUnion1, RegionDifference)
       *开运算去除很小点的噪声
        opening_circle (RegionDifference, RegionOpening, 3)
       *求缺陷的面积
        area_center (RegionOpening, Area, Row1, Column1)
         *缺陷面积大于阈值,说明有缺陷
        if(Area>100)
            *设置缺陷区域的颜色
            dev_set_color ('blue')
            *显示缺陷区域
            dev_display (RegionOpening)
            *显示NG
            set_display_font (WindowHandle, 50, 'mono', 'true', 'false')
            disp_message (WindowHandle,'NG', 'window', 15, 40, 'yellow', 'false')
          *缺陷面积小于阈值,说明没缺陷
        else
            *显示OK
            set_display_font (WindowHandle, 50, 'mono', 'true', 'false')
            disp_message (WindowHandle,'OK', 'window', 15, 40, 'green', 'false')
        endif
  *没有匹配到模板,直接NG       
      else
          set_display_font (WindowHandle, 50, 'mono', 'true', 'false')
          disp_message (WindowHandle,'NG', 'window', 15, 40, 'yellow', 'false')
      endif
endfor

完整项目代码下载地址Halcon检测硬刷字体缺陷项目资源-CSDN文库

四、主要算子介绍

1.create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)

create_shape_model (ImageReduced1, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

创建模版

Halcon算子—create_shape_model参数解析及优化-CSDN博客

2.find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

find_shape_model (Image, ModelID, 0, rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

匹配模版

【精选】[Halcon&算子] find_shape_model()详解和解决匹配函数耗时问题-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Halcon 是一种强大的机器视觉软件库,可用于各种应用领域,包括印刷文字检测印刷文字检测是指能够从图像中自动识别和定位印刷文字的技术。 使用 Halcon 进行印刷文字检测需要以下步骤。 首先,需要导入待检测的图像。可以通过 Halcon 提供的函数读取图像文件,如读取常见的 jpg、png 等格式的图像。 接下来,对图像进行预处理。这包括灰度化处理,将图像转化为灰度图,以便更好地进行文字检测。还可以进行图像增强处理,以提高文字的清晰度和对比度。Halcon 提供了丰富的图像处理函数和算法,可以根据具体需求选择合适的方法。 然后,进行文字检测Halcon 提供了多种不同的文字检测算法,如基于形状的特征检测,基于卷积神经网络(CNN)的文字检测等。可以根据具体的应用场景选择最适合的算法。 在文字检测完成后,还可以进行文字区域的定位和边界框标记。Halcon 提供了各种图像分割和形状分析算法,可用于定位和提取文字区域,并通过绘制边界框将其标记出来。 最后,可以根据需求对检测结果进行后处理。例如,可以进行文字识别,将检测到的文字转换为可编辑的文本。Halcon 提供了强大的文字识别功能,可以将文字从图像中提取出来。 综上所述,Halcon 能够帮助我们实现高效准确的印刷文字检测。通过适当的图像预处理、文字检测和后处理,我们可以从图像中自动提取出印刷文字,并进行各种进一步的分析与应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值