当前位置: 首页 > news >正文

在halcon中使用模板匹配助手进行定位真的很好用!!!

一、如何使用模板匹配助手

1、菜单栏中点击助手---选择打开新的Matching

 2、选择对应的模板类型

二、模板匹配助手中每个界面的功能介绍 

(一)创建界面

1、模板来源

  • 选择是从图像画ROI创建还是读取模板文件

2、模板资源

  • 选项有基于图像窗口、文件、采集助手

  • 在创建模板的时候绘制ROI区域,对于ROI区域的绘制可以根据ROI监视更改

3、修改模板图像

  •  点击使能则可以使用该功能

4、金字塔层数

  • 金字塔层级1对应的轮廓和图像 

  • 金字塔层级3对应的轮廓和图像 

  • 金字塔层级5对应的轮廓和图像 

  • 金字塔层级7对应的轮廓和图像 

 5、标定来源

(二) 参数界面

  • 关于角度步长:在0-360°进行搜索模板时模板以设置的角度步长进行一个匹配。步长大,执行次数少,可能存在的就是精度和稳定性差;步长小,执行次数多,这样精度和稳定性比较高,同时会带来的问题就是搜索时间比较久。针对不知道如何设置步长,可设置为'auto'

(三)应用

  • 加载测试图像进行检测

图像中有两个电芯,识别出来的也是两个
图像中有两个电芯,识别出来的是1个,更改设置参数后就可以识别到了

 (四)检测

  • 点击执行后会显示一些和查找相关的信息数据

 (五)代码

  • 这里就可以插入代码了

*模型初始化的开始
set_system ('border_shape_models', 'false')

*获取模型图片
read_image (Image, 'C:/Users/13601/Desktop/0.BMP')

*从基本区域构建ROI
gen_rectangle2 (ModelRegion, 674.29, 1110.63, rad(-176.76), 557.391, 298.746)

*简化模型模板
reduce_domain (Image, ModelRegion, TemplateImage)

*创建形状模型
create_shape_model (TemplateImage, 8, rad(0), rad(360), rad(0.2265), ['point_reduction_high','no_pregeneration'], 'use_polarity', [32,59,23], 7, ModelID)

*获取模型轮廓,以便稍后将其转换为图像
get_shape_model_contours (ModelContours, ModelID, 1)

*获取参考位置
area_center (ModelRegion, ModelRegionArea, RefRow, RefColumn)
vector_angle_to_rigid (0, 0, 0, RefRow, RefColumn, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)

*显示模型边缘
dev_display (Image)
dev_set_color ('green')
dev_set_draw ('margin')
dev_display (ModelRegion)
dev_display (TransContours)
stop ()
*模型初始化的结束

*模型应用的开始
*遍历所有指定的测试图像
TestImages := ['C:/Users/13601/Desktop/1.BMP','C:/Users/13601/Desktop/2.BMP']
for T := 0 to 1 by 1
    *获取测试图像
    read_image (Image, TestImages[T])


    *在检测图像中寻找模板
    find_shape_model (Image, ModelID, rad(0), rad(360), 0.5, 2, 0.75, 'least_squares', [8,3], 0.75, Row, Column, Angle, Score)

    *将模型轮廓变换为检测到的位置
    dev_display (Image)
    for I := 0 to |Score| - 1 by 1
        hom_mat2d_identity (HomMat2D)
        hom_mat2d_rotate (HomMat2D, Angle[I], 0, 0, HomMat2D)
        hom_mat2d_translate (HomMat2D, Row[I], Column[I], HomMat2D)
        affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
        dev_set_color ('green')
        dev_display (TransContours)
        stop ()
    endfor
endfor

 

相关文章:

  • 青少年python系列 7.函数
  • python入门——m个位置,每个位置有n种可能,求所有排列结果
  • C | 妙用异或
  • 采用uni-app开发的多端圈子社区论坛系统
  • Java语言特点
  • 读书笔记1|深度学习入门:Machine Learning Yearning
  • matplotlib+cartopy+geopandas,实现专业地图可视化
  • 【网络安全篇】php伪协议-漏洞及其原理
  • 【操作系统】实时调度
  • 【python】之序列及其基本操作
  • 温湿度传感器实验-传感器原理及应用实验
  • 2022 年值得推荐的 Vue 库
  • 2022年大二学生HTML期末作业,网页制作作业(我的校园网站制作)
  • 数据库SQL面试题
  • STM32——内存管理实验
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2017-08-04 前端日报
  • js对象的深浅拷贝
  • Leetcode 27 Remove Element
  • react-native 安卓真机环境搭建
  • SpiderData 2019年2月13日 DApp数据排行榜
  • spring boot 整合mybatis 无法输出sql的问题
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从零开始在ubuntu上搭建node开发环境
  • 码农张的Bug人生 - 见面之礼
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序开发中的那些坑
  • #{}和${}的区别?
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $GOPATH/go.mod exists but should not goland
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (10)ATF MMU转换表
  • (7)STL算法之交换赋值
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot教学评价 毕业设计 641310
  • (三)docker:Dockerfile构建容器运行jar包
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)平衡树
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .form文件_SSM框架文件上传篇
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET上SQLite的连接
  • ?php echo ?,?php echo Hello world!;?
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C++]priority_queue的介绍及模拟实现
  • [C++]unordered系列关联式容器
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [HDU]2161Primes
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [IE9] IE9 beta版下载链接
  • [LeeCode]-Divide Two Integers 不用乘除的除法运算
  • [Oh My C++ Diary]内联函数