Halcon模板匹配

2023-11-19

在这里插入图片描述
在这里插入图片描述
原理:
在这里插入图片描述

Halcon模板匹配的方法

在这里插入图片描述

模板匹配的流程

在这里插入图片描述

基于形状的模板匹配的思路

读取图像,转灰度图

dev_close_window()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image20230323165851, 'F:/halcon/halconStudy/联想截图_20230323165851.png')
rgb1_to_gray (Image20230323165851, GrayImage)

在这里插入图片描述
阈值分割

threshold (GrayImage, Regions, 12, 142)

在这里插入图片描述
划分区域

connection (Regions, ConnectedRegions)

在这里插入图片描述
特征直方图形状选择:

connection (Regions, ConnectedRegions)

在这里插入图片描述
在这里插入图片描述
填充圆形的区域,并膨胀

fill_up (SelectedRegions, RegionFillUp)
dilation_circle (RegionFillUp, RegionDilation, 3.5)

在这里插入图片描述

  1. 根据区域抠图的算子:
    在这里插入图片描述
reduce_domain (GrayImage, RegionDilation, ImageReduced)

在这里插入图片描述

  1. 创建模板
    在这里插入图片描述
    在这里插入图片描述
create_scaled_shape_model (ImageReduced, 'auto', rad(-45), rad(90), 'auto', 0.8, 1, 'auto', 'auto', 'ignore_local_polarity', 'auto', 'auto', ModelID)

获取模板轮廓

get_shape_model_contours (ModelContours, ModelID, 1)

在这里插入图片描述

  1. 使用仿射变换调整模板的位置

模板初始位置是(0,0),需要调整到图片中的相应位置上

area_center (ImageReduced, Area, Row, Column)
vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)

在这里插入图片描述

在这里插入图片描述
可以看到,模板和原图中的位置是一一匹配的

dev_display (GrayImage)

在这里插入图片描述
4. 匹配图像

读取待匹配的图像

read_image (Image20230323174832, 'F:/halcon/halconStudy/联想截图_20230323174832.png')
rgb1_to_gray (Image20230323174832, GrayImage1)
  1. 调用寻找模板的算子

在这里插入图片描述

find_scaled_shape_model (GrayImage1, ModelID, rad(-45), rad(90),0.8, 1, 0.5, 0, 0.5, 'least_squares', 5, 0.9, Row1, Column1, Angle, Scale, Score)
  1. 再使用变换,调整模板位置。。
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_translate (HomMat2DIdentity, Row1[index],Column1[index], HomMat2DTranslate)
    hom_mat2d_rotate (HomMat2DTranslate, Angle1[index], Row1[index],Column1[index], HomMat2DRotate)
    hom_mat2d_scale (HomMat2DRotate, Scale1[index], Scale1[index], Row1[index], Column1[index], HomMat2DScale)
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans2, HomMat2DScale)

匹配的有问题。。。

dev_close_window()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image20230323165851, 'F:/halcon/halconStudy/联想截图_20230323165851.png')
rgb1_to_gray (Image20230323165851, GrayImage)
threshold (GrayImage, Regions, 12, 142)
select_shape (ConnectedRegions, SelectedRegions, 'row', 'and', 168.35, 194.04)
connection (Regions, ConnectedRegions)
fill_up (SelectedRegions, RegionFillUp)
dilation_circle (RegionFillUp, RegionDilation, 3.5)
reduce_domain (GrayImage, RegionDilation, ImageReduced)
create_scaled_shape_model (ImageReduced, 'auto', rad(-45), rad(90), 'auto', 0.8, 1, 'auto', 'auto', 'ignore_local_polarity', 'auto', 'auto', ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)

area_center (ImageReduced, Area, Row, Column)
vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)

dev_display (GrayImage)

read_image (Image20230323174832, 'F:/halcon/halconStudy/联想截图_20230323174832.png')
rgb1_to_gray (Image20230323174832, GrayImage1)

find_scaled_shape_model (GrayImage1, ModelID, rad(-45), rad(90), 0.8, 1, 0.5, 0, 0.5, 'least_squares', 5, 0.9, Row1, Column1, Angle1, Scale1, Score1)
for index:= 0 to |Score1|-1 by 1
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_translate (HomMat2DIdentity, Row1[index],Column1[index], HomMat2DTranslate)
    hom_mat2d_rotate (HomMat2DTranslate, Angle1[index], Row1[index],Column1[index], HomMat2DRotate)
    hom_mat2d_scale (HomMat2DRotate, Scale1[index], Scale1[index], Row1[index], Column1[index], HomMat2DScale)
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans2, HomMat2DScale)
    dev_display (ContoursAffinTrans2)
endfor
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Halcon模板匹配 的相关文章

随机推荐

  • HTTP响应详解, HTTP请求构造及HTTPS详解

    HTTP响应详解 认识 状态码 status code 状态码表示访问一个页面的结果 是访问成功 还是失败 还是其他的一些情况 以下为常见的状态码 200 OK 这 是一个最常见的状态码 表示访问成功 抓包抓到的大部分结果都是 200 例如
  • numpy load npz文件

    一 问题 numpy version 1 23 0 优化项目的是时候发现索引一个dict的时候很慢 因此进行分析 速度很慢的问题代码如下 arr dict np load test npz npz 100MB for i in range
  • 神州网信远程、关闭屏幕时间、关闭神州网信密码

    一 远程查看电脑 按 windows r 输入gpedit msc 运行组策略 gpedit msc 进行下面的操作 1 计算机配置 管理模板 Windows组件 远程桌面服务 远程桌面会话主机 连接 允许用户通过使用远程桌面服务进行远程连
  • Qt creator4.8.0 以上使用SqLite数据库进行数据操作

    文章目录 前言 一 在 pro工程文件中添加sql模块 二 使用步骤 1 添加头文件 2 链接并打开数据库 3 创建用户信息表management info 4 插入数据操作 5 修改数据库操作 6 查询数据库 总结 前言 Qt creat
  • 基于MATLAB的filter的使用,低通、带通和高通滤波器设计

    1 目的 学习MATLAB的filter函数的使用 通过设计低通 带通和高通滤波器对其进行仿真 2 用到的主要函数和工具 MATLAB FDATOOL filter fft 3 设计 信号的产生 Parameter Interface Fr
  • java高级开发面试题总结

    面试题总结 JAVA高级工程师 近期考虑换工作的问题 于是投简历面试 面试5家公司的高级Java工程师 有4家给了我offer 想着总结一下面试经验 方便最近正在寻求机会的你们 一 无笔试题 不知道是不是职位原因还是没遇到 面试时 都不需要
  • 阿里云轻量应用服务器使用指南适用于所有人

    最近一直在捣鼓阿里云服务器 想着把自己写好的一些项目部署到服务器上供其他人访问 一路上踩了不少坑 也查了不少资料 最后解决了 写个博客记录下来 也为其他想要建站的同学提供一个指引 购买轻量应用服务器 传送门 阿里云 如果是在校学生 可以直接
  • SpringCloud之Hystrix

    1 服务熔断与降级 在微服务架构中多层服务之间会相互调用 如果其中有一层服务故障了 可能会导致一层服务或者多层服务 故障 从而导致整个系统故障 这种现象被称为服务雪崩效应 SpringCloud 中的 Hystrix 组件就可以解决此类问题
  • 有时间再看decode详解

    Oracle 中 decode 函数用法 含义解释 decode 条件 值1 返回值1 值2 返回值2 值n 返回值n 缺省值 该函数的含义如下 IF 条件 值1 THEN RETURN 翻译值1 ELSIF 条件 值2 THEN RETU
  • 冲刺春招-精选笔面试 66 题大通关 day6

    day6题目 33 搜索旋转排序数组 54 螺旋矩阵 bytedance 006 夏季特惠 学习计划链接 冲刺春招 精选笔面试 66 题大通关 今日知识点 二分 模拟 01背包 难度为中等 中等 字节 简单 33 搜索旋转排序数组 整数数组
  • ARouter(二)源码解析

    前言 这一篇我们来具体看一下ARouter的实现原理 如果你之前没有接触过ARouter 可以先阅读上一篇 Android 从零开始打造自己的深度链接库 一 ARouter简介 废话不多 我们赶紧分析源码 正文 首先我们从github下载最
  • 中文信息处理实验8——基于逻辑斯蒂回归模型的文本分类

    目录 实验目的 实验要求 实验内容及原理 参考代码 实验结果 实验目的 加深对汉语文本信息处理基础理论及方法的认识和了解 锻炼和提高分析问题 解决问题的能力 通过对具体项目的任务分析 数据准备 算法设计和编码实现以及测试评价几个环节的练习
  • win10系统C盘出现感叹号及加密图标解除

    近期遇到Win10系统C盘图标加密情况 经过搜索查找最终解决 并对操作进行简单记录 1 以管理员身份打开命令行窗口 2 输入 manage bde off c 3 相关指令 加密指令 manage bde on c 查看状态指令 manag
  • 使用定时框架Quartz.net时,发布到服务器后无法正常执行定时任务

    问题描述 使用Quartz net每天定时执行某个任务时 未能正常执行 每次在本地测试时 设置了短的时间间隔 都能正常执行任务 但是挂到服务器后 设置定时执行时间为几个小时 却不能正常执行我们要执行的操作 原 因 IIS的程序池有一个闲置超
  • _Linux网络数据包的揭秘以及常见的调优方式总结

    作为业务 SRE 我们所运维的业务 常常以 Linux TCP UDP daemon 的形式对外提供服务 SRE 需要对服务器数据包的接收和发送路径有全面的了解 以方便在服务异常时能快速定位问题 以 tcp 协议为例 本文将对 Linux
  • 自己封装一个类express路由框架

    今天用了Node封装一个简单的类似express框架的路由 首先先看看 没封装 之前的server路由代码 const http require http const url require url const ejs require ej
  • Java变量与常量书写方式与规范

    变量 变量是什么 变量是可以变化的量 Java是一种强类型语言 每个变量都必须声明其类型 Java变量是程序中最基本的存储单元 其要素包括变量名 变量类型和作用域 type varName value varName value 数据类型
  • 链表指定区间反转

    题目 反转从位置 m 到 n 的链表 请使用一趟扫描完成反转 说明 1 m n 链表长度 输入 1 gt 2 gt 3 gt 4 gt 5 gt NULL m 2 n 4 输出 1 gt 4 gt 3 gt 2 gt 5 gt NULL 头
  • java公钥签名,ping++ java验签(签名,公钥,charge)怎么获取

    packageexample importjava io FileInputStream importjava security InvalidKeyException importjava security KeyFactory impo
  • Halcon模板匹配

    Halcon模板匹配 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 原理 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 读取图像 转灰度图 dev close window dev open