热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

模板匹配–卡尺工具找圆

金属表面圆孔的识别与定位步骤:1.模板匹配的方式找到圆孔  图片质量不好,对比度较差,需要对图像进行预处理,使图像变得更清楚,对比度变强;   illuminate,equ_his

金属表面圆孔的识别与定位

步骤:

1. 模板匹配的方式找到圆孔

    图片质量不好,对比度较差,需要对图像进行预处理,使图像变得更清楚,对比度变强;

    illuminate,equ_histo_image

    

 

   模板匹配获取圆孔的的轮廓

2. 由第一步获取轮廓,拟合一个圆形,再通过卡尺工具得到圆孔的圆,得到圆心坐标,即可实现精定位。

1 list_files('E:/学习/Halcon/模板匹配/金属圆环', 'files', Files)
2 tuple_regexp_select(Files, '.*', Selection)
3
4 read_image(Image, Files[0])
5
6 *图像预处理
7 illuminate(Image, ImageIlluminate, 101, 101, 0.7)
8 equ_histo_image(ImageIlluminate, ImageEquHisto)
9 dev_set_draw('margin')
10 gen_circle (ROI_0, 657.5, 516.629, 38.984)
11
12 reduce_domain(ImageEquHisto, ROI_0, ImageReduced)
13 inspect_shape_model(ImageReduced, ModelImages, ModelRegions, 4, 40)
14
15 create_shape_model(ImageReduced, 4, -0.39, 0.79, 'auto', 'auto', 'use_polarity', 40, 5, ModelID)
16 get_shape_model_contours(ModelContours, ModelID, 1)
17 find_shape_model(Image, ModelID, -0.39, 0.78, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
18
19 vector_angle_to_rigid(0, 0, 0, Row, Column, 0, HomMat2D)
20 affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2D)
21 dev_clear_window()
22 dev_display(Image)
23 dev_display(ContoursAffinTrans)
24 for I := 0 to |Files|-1 by 1
25 read_image(Image, Files[I])
26 illuminate(Image, ImageIlluminate, 101, 101, 0.7)
27 equ_histo_image(ImageIlluminate, ImageEquHisto)
28 find_shape_model(ImageEquHisto, ModelID, -0.39, 0.78, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
29
30 vector_angle_to_rigid(0, 0, 0, Row, Column, 0, HomMat2D)
31 affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2D)
32
33 dev_clear_window()
34 dev_display(ImageEquHisto)
35 dev_display(ContoursAffinTrans)
36
37 union_adjacent_contours_xld(ContoursAffinTrans, UnionContours, 100, 50, 'attr_keep')
38 dev_set_color('green')
39 dev_display(UnionContours)
40 length_xld(UnionContours, Length)
41 tuple_max(Length, Max)
42 tuple_find(Length, Max, Indices)
43
44 select_obj(UnionContours, ObjectSelected, Indices+1) //获取外圆的轮廓
45 dev_clear_window()
46 dev_display(ImageEquHisto)
47 fit_circle_contour_xld(ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, CircleRow, CircleColumn, CircleRadius, StartPhi, EndPhi, PointOrder)
48 gen_circle(Circle, CircleRow, CircleColumn, CircleRadius)
49 dev_display(Circle)
50
51 create_metrology_model(MetrologyHandle)
52 CircleParam :=[CircleRow, CircleColumn, CircleRadius]
53 add_metrology_object_generic(MetrologyHandle, 'circle', CircleParam, 10, 5, 1, 30, [], [], Index)
54
55 set_metrology_object_param(MetrologyHandle, 'all', 'measure_transition', 'positive')
56
57 apply_metrology_model(ImageEquHisto, MetrologyHandle)
58 get_metrology_object_measures(Contours, MetrologyHandle, 'all', 'all', Row1, Column1)
59 get_metrology_object_result(MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
60 get_metrology_object_result_contour(Contour, MetrologyHandle, 'all', 'all', 1.5)
61 gen_cross_contour_xld(Cross, Row1, Column1, 20, Angle)
62
63 dev_clear_window()
64 dev_display(ImageEquHisto)
65 dev_set_color('green')
66 dev_display(Contours)
67 dev_set_color('blue')
68 dev_display(Contour)
69 dev_set_color('red')
70 dev_display(Cross)
71 clear_metrology_model(MetrologyHandle)
72 stop()
73 endfor

运行结果:

 

 



推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 苹果新专利或将引领无边框手机时代
    苹果公司最近公布了一项新的专利技术,该技术能够在设备屏幕中嵌入光线传感器,这标志着苹果在实现无边框手机设计上迈出了重要一步。这一创新将极大提升手机的屏占比,并可能为未来的iPhone带来革命性的变化。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • RT,个人博客图片管理(方便管理,大家 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
author-avatar
linjiabin43
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有