Halcon_数据类型_ROI_仿射变换_投影变换

文章目录

  • 算子
  • 快捷键
  • 一、Halcon数据类型
    • Iconic (图标)
    • Control (控制)
    • Tuple (数组)
  • 二、ROI(区域)
    • 1.代码创建ROI
    • 2.手动创建ROI
  • 三、图形预处理
    • 1.图像的变换与矫正
      • 平移 -hom_mat2d_translate
      • 旋转
      • 缩放-HomMat2D:输入的仿射变换矩阵。
      • 切变
      • 相似变换
      • 仿射变换 affine_trans_image
      • 投影变换- projective_trans_image


算子

类似于C++的函数,但参数依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数

快捷键

  • 多行注释:选中想要注释的代码,然后直接按F4
  • 取消注释:按F3可以取消注释

一、Halcon数据类型

Iconic (图标)

  • Image(图像)
//读取图片的算子
read_image (图片变量名, 图片位置'mreut')
  • Region(区域)
threshold (Mreut, Region, 190, 255)  
//阈值化,输出阈值在190-255的Regions
  • Extended Line Description(XLD)

Control (控制)

  • String (字符)
  • Integer (整形)
  • Real (实型)
  • Handle (句柄)

Tuple (数组)

二、ROI(区域)

1.代码创建ROI

read_image(Image,'claudia.png')
gen_rectangle1(Region,0,10,100,100)-创建矩形ROI
reduce_domain(Image,Region,Image2)-将给定图像的定义域缩小到指定的区域。
dev_display(Image2)-显示图片

在这里插入图片描述
在这里插入图片描述

2.手动创建ROI

read_image(Image,'claudia.png')
get_image_size(Image,Width,Height)-获取图片长宽
dev_open_window(0,0,Width,Height,'black',WindowHandle)-创建图形窗口
draw_rectangle1(WindowHandle,Row1, Column1, Row2, Column2)-获取画的矩形坐标和大小
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)-创建矩形region
reduce_domain(Image, Rectangle, ImageReduced)-缩减到创建region
dev_display(ImageReduced)

在这里插入图片描述
按下鼠标右键确认框选
在这里插入图片描述

三、图形预处理

函数:
hom_mat2d_identity( : : : HomMat2DIdentity)
作用:生成变换矩阵
HomMat2DIdentity:生成的变量名

1.图像的变换与矫正

平移 -hom_mat2d_translate

在这里插入图片描述

函数:
hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
作用:平移矩阵
参数:
HomMat2D:变换矩阵
Tx:沿x轴方向平移的距离。
Ty:沿y轴方向平移的距离。
HomMat2DTranslate:输出变换的矩阵

旋转

在这里插入图片描述
公式:
在这里插入图片描述

函数:
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
作用:将旋转角度添加到仿射变换矩阵
参数:
HomMat2D:输入的仿射变换矩阵。
Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵

缩放-HomMat2D:输入的仿射变换矩阵。

Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵
在这里插入图片描述

函数:
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
作用:将缩放添加到仿射变换矩阵中
HomMat2D:输入的仿射变换矩阵。
Phi:旋转角度(单位为弧度)。
Px:变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)。
Py:变换的固定点列坐标。
HomMat2DRotate:输出的变换矩阵

切变

在这里插入图片描述
公式:下面介绍切变的其他和看上面

在这里插入图片描述

函数:
hom_mat2d_slant( : : HomMat2D, Theta, Axis, Px, Py : HomMat2DSlant)
作用:添加切变到仿射变换矩阵中
参数:
HomMat2D:输入的仿射变换矩阵。
Theta:斜切角度(单位:弧度)。
Axis:斜切的坐标轴,取值可以是 'x''y'。
Px:变换的固定点x坐标。
Py:变换的固定点y坐标。
HomMat2DSlant:输出的斜切仿射变换矩阵

相似变换

相似变换:由一个平面/立体图形变换到另一个平面/立体图形,在改变的过程中保持形状不变(大小方向和位置可变),任何相似变换都可以分解为等比例缩放、平移、旋转的组合。
在这里插入图片描述

仿射变换 affine_trans_image

仿射变换:由一个平面/立体图形变换到另一个平面/立体图形,在改变的过程中保持直线和平行线不变(平行线映射为平行线),任何仿射变换都可以分解为缩放、平移、旋转、和切变的组合。

函数:
affine_trans_image(Image : ImageAffineTrans : HomMat2D, Interpolation, AdaptImageSize : )
作用:放射变换图片
参数:
Image:需要变换的图片
ImageAffineTrans:变换后的图片
HomMat2D :变换的矩阵
Interpolation:插值算法,一般用‘constant’
AdaptImageSize:是否自适应,true 或者 false

样例代码:

read_image(Image,'claudia.png')
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)

*创建矩阵
*平移
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_translate(HomMat2DIdentity,Width/2,Height/2,HomMat2DTranslate)
* affine_trans_image(Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'true')
* dev_clear_window()
* dev_display(ImageAffineTrans)

*旋转
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_rotate(HomMat2DIdentity,3.14/2,Width/2,Height/2,HomMat2DRotate)
* affine_trans_image(Image,ImageRotate,HomMat2DRotate,'constant','false')
* dev_clear_window()
* dev_display(ImageRotate)
*缩放
* hom_mat2d_identity(HomMat2DIdentity)
* hom_mat2d_scale(HomMat2DIdentity, 0.5, 0.5,  Height, Width,HomMat2DScale)
* affine_trans_image(Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')
* dev_clear_window()
* dev_display(ImageAffineTrans)
*切变
hom_mat2d_identity(HomMat2DIdentity)
hom_mat2d_slant(HomMat2DIdentity, -3.14/4, 'x',  Height,Width, HomMat2DSlant)
affine_trans_image(Image, ImageAffineTrans1, HomMat2DSlant, 'constant', 'false')
dev_clear_window()
dev_display(ImageAffineTrans1)

投影变换- projective_trans_image

仿射变换几乎能校正物体所有可能发生的与位姿相关的变化,但并不能应付所有情况。投影变换包括的情况很多,如对边不再平行,或者发生了透视畸变等,这时可以使用投影变换使其恢复原状。其步骤与仿射变换类似,首先计算投影变换矩阵,然后计算投影变换参数,最后将投影变换矩阵映射到对象上。

函数:
projective_trans_image(Image : TransImage : HomMat2D, Interpolation, AdaptImageSize, TransformDomain : )
作用:应用一个齐次投影变换矩阵(HomMat2D)到输入图像上,生成变换后的输出图像。
参数:
Image (input_object): 输入图像。
TransImage (output_object): 输出图像。
HomMat2D (input_control): 齐次投影变换矩阵。
Interpolation (input_control): 变换的插值方法,默认为 'bilinear',可选值包括 'bilinear', 'nearest_neighbor'AdaptImageSize (input_control): 是否自动调整输出图像的大小,默认为 'false'TransformDomain (input_control): 是否变换输入图像的域,默认为 'false'

样例:

read_image(Image,'4-3.png')
dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle)
dev_set_color('red')
dev_set_line_width(2)
X:=[163,280,362,75]
Y:=[125,120,361,340]
dev_display(Image)
gen_cross_contour_xld(Cross, X, Y, 6, 0.785398)//生成叉叉
dev_display(Cross)
*根据点计算齐次变换矩阵
hom_vector_to_proj_hom_mat2d(X,Y,[1,1,1,1],[75,360,360,75],[110,110,395,395],[1,1,1,1],'normalized_dlt', HomMat2D)
*投影变换
projective_trans_image(Image, TransImage, HomMat2D, 'bilinear', 'false', 'false')

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言(指针基础练习)

删除数组中的元素 数组的元素在内存地址中是连续的&#xff0c;不能单独删除数组中的某个元素&#xff0c;只能覆盖。 #include <stdio.h> #include <stdbool.h>// 函数声明 int deleteElement(int arr[], int size, int element);int main() {int arr[] {1, 2, 3…

甘肃美食之选:食家巷方形饼

甘肃食家巷方形饼&#xff0c;顾名思义&#xff0c;其形状呈规整的方形。这种独特的外形并非偶然&#xff0c;而是源于当地传统的制作工艺。制作方形饼的师傅们&#xff0c;精心挑选优质的面粉&#xff0c;加入适量的水和其他配料&#xff0c;揉成光滑的面团。经过一段时间的发…

共享GitLab中CICD自动生成的软件包

0 Preface/Foreword 1 分享软件包地址 为了方便给接收对象方便下载固件&#xff0c;在下载固件时候&#xff0c;而无需打开网页&#xff0c;直接输入地址&#xff0c;弹出的对话框是将固件另存为。 或者进入CICD页面&#xff0c;找到job&#xff0c;在Download的标签上单击右键…

区块链钱包开发:全面功能设计方案解析

区块链钱包是连接用户与区块链世界的核心工具&#xff0c;为用户提供了存储、管理和交易加密资产的便捷途径。随着区块链应用的广泛普及&#xff0c;钱包的功能需求和技术复杂度也在不断增加。如何设计和开发一款功能全面、安全可靠的区块链钱包&#xff0c;成为区块链项目成功…

计算机网络-IPSec VPN工作原理

一、IPSec VPN工作原理 昨天我们大致了解了IPSec是什么&#xff0c;今天来学习下它的工作原理。 IPsec的基本工作流程如下&#xff1a; 通过IKE协商第一阶段协商出IKE SA。 使用IKE SA加密IKE协商第二阶段的报文&#xff0c;即IPsec SA。 使用IPsec SA加密数据。 IPsec基本工作…

“切片赋值”创建列表批量操作“新”方法(Python)

[start:end]切片赋值&#xff0c;扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建&#xff0c;本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;…

电脑无法识别usb设备怎么办?电脑无法识别usb解决方法

usb设备是我们常解除的外部操作以及存储设备&#xff0c;它可以方便用户数据传输以及操作输入。但在使用过程中&#xff0c;大家基本都碰到过电脑无法识别usb设备这种情况。这种情况下&#xff0c;我们应该怎么办呢&#xff1f;下面将为你介绍几种可能的原因和解决方法&#xf…

【机器学习】分类器

在机器学习(Machine Learning&#xff0c;ML)中&#xff0c;分类器泛指算法或模型&#xff0c;用于将输入数据分为不同的类别或标签。分类器是监督学习的一部分&#xff0c;它依据已知的数据集中的特征和标签进行训练&#xff0c;并根据这些学习到的知识对新的未标记数据进行分…

路径规划之启发式算法之十一:布谷鸟搜索算法(Cuckoo Search,CS)

布谷鸟搜索算法&#xff08;Cuckoo Search&#xff0c;CS&#xff09;是一种新兴的自然启发式算法&#xff0c;由剑桥大学的杨新社教授和S.戴布&#xff08;Xin-She Yang和Suash Deb&#xff09;于2009年提出。该算法基于布谷鸟的寄生性育雏&#xff08;巢寄生&#xff09;行为…

Java-JMX (官方文档解读)

JMX 简介 JMX&#xff08;Java Management Extensions&#xff09;是Java平台的一个标准管理框架&#xff0c;自Java 1.5版本起成为Java 平台标准版 (Java SE 平台) 的标准组成部分。JMX 技术提供了一种简单、标准的方法来管理资源&#xff08;例如应用程序、设备和服务&#x…

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展&#xff0c;跨境电商行业蓬勃兴起&#xff0c;为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中&#xff0c;优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…

java 日期与时间

Java 的时间 API 是一个非常重要的主题&#xff0c;尤其是 Java 8 引入的 java.time 包&#xff0c;它为日期和时间处理提供了强大的功能。 我们可以按照以下几个主题逐步学习 Java 时间处理&#xff1a; import java.time.LocalDate; import java.time.LocalDateTim…

(ICML-2024)DoRA:权重分解低秩自适应

DoRA&#xff1a;权重分解低秩自适应 Paper是英伟达发表在ICML 2024的工作 Paper Title&#xff1a;DoRA: Weight-Decomposed Low-Rank Adaptation Code&#xff1a; 地址 Abstract 在广泛使用的参数高效微调 (PEFT) 方法中&#xff0c;LoRA 及其变体因避免了额外的推理成本而…

想在iPad上远程操作安卓手机的APP,怎样实现iPad远程控制安卓?

学生党或互联网行业的打工人&#xff0c;人手连三台电子设备也很常见&#xff0c;手机、平板还有笔记本电脑一大堆&#xff0c;如果出门要全带上&#xff0c;背包压力也变大。 有没有想过用远程控制功能&#xff0c;让iPad远程控制安卓手机&#xff1f;这样做&#xff0c;出门就…

【JavaEE】UDP、TCP的API介绍

目录 UDP数据报套接字编程 DatagramSocket API DatagramPacket API 回显C/S示例 TIPS TCP ServerSocket API Socket API 回显C/S示例 UDP数据报套接字编程 DatagramSocket API socket是操作系统中的一种概念&#xff0c;本质上是一种特殊的文件&#xff0c;socket属于…

【专题】2024年11月新能源汽车、智能汽车行业报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38520 随着科技的飞速发展与社会的持续变革&#xff0c;新能源汽车与智能汽车行业正步入全新的发展阶段&#xff0c;成为全球瞩目的焦点领域。本报告深入且全面地剖析了 2024 年 11 月该行业的多方面状况。从汽车消费市场来看&#…

mysql重置root密码(适用于5.7和8.0)

今天出一期重置mysql root密码的教程&#xff0c;适用于5.7和8.0&#xff0c;在网上搜索了很多的教程发现都没有效果&#xff0c;浪费了很多时间&#xff0c;尝试了多次之后发现这种方式是最稳妥的&#xff0c;那么废话不多说&#xff0c;往下看&#xff1a; 目录 第一步&…

AI智能体Prompt预设词指令大全+GPTs应用使用

AI智能体使用指南 直接复制在AI工具助手中使用&#xff08;提问前&#xff09; 可前往SparkAi系统用户官网进行直接使用 SparkAI系统介绍文档&#xff1a;Docs 常见AI智能体GPTs应用大全在线使用 自定义添加制作AI智能体进行使用&#xff1a; 文章润色器 你是一位具有敏锐洞察…

linux 系统常用指令

1、查看内核版本 uname -r 2、列出占用空间最大的 10 个文件或目录 du -ah / | sort -rh | head -n 10 终于找到我虚拟机硬盘空间越来越少的原因了&#xff0c;类目......

[C++]继承

继承 概念使用方法继承方式子类的构造与析构 继承的成员继承成员在子类对象里的存放顺序成员变量普通成员变量静态成员变量 成员函数普通成员函数重定义&#xff08;隐藏&#xff09; 静态成员函数友元函数 单继承与多继承概念赋值转换&#xff08;切片&#xff09;多继承带来的…