机器视觉--Halcon变量的创建与赋值

一、引言

在机器视觉领域,Halcon 作为一款强大且功能丰富的软件库,为开发者提供了广泛的工具和算子来处理各种复杂的视觉任务。而变量作为程序中存储和操作数据的基本单元,在 Halcon 编程中起着至关重要的作用。正确地创建和赋值变量是编写高效、准确的 Halcon 程序的基础。本文将深入探讨 Halcon 中不同类型变量的创建与赋值方法.

二、Halcon 变量类型概述

Halcon 支持多种类型的变量,每种类型都有其特定的用途和存储方式。以下是一些常见的变量类型:

  1. 图像变量(Image):用于存储图像数据,是 Halcon 中处理视觉信息的核心。图像可以从各种来源获取,如相机、图像文件等。
  2. 区域变量(Region):表示图像中的特定区域,可以是由轮廓、形状等定义的区域。区域变量在图像分析、目标检测等任务中经常使用。
  3. XLD 轮廓变量(XLD Contours):用于存储图像中的边缘轮廓信息,提供了更精确的轮廓表示,常用于特征提取和形状分析。
  4. 数值变量(Number):包括整数、浮点数等,用于存储数值型数据,如坐标值、参数值、计数器等。
  5. 字符串变量(String):用于存储文本信息,如文件名、路径、标签等。

三、图像变量的创建与赋值

3.1 从文件读取图像

最常见的创建图像变量并赋值的方式是从图像文件中读取图像。Halcon 提供了 read_image 算子来实现这一功能。以下是一个简单的示例:

在上述代码中:

  • dev_close_window 关闭当前可能存在的显示窗口。
  • read_image 算子将名为 fabrik 的图像文件读取到 Image 变量中。这里的 fabrik 是 Halcon 自带的示例图像文件名,你也可以替换为自己的图像文件路径和名称。
  • dev_open_window_fit_image 根据图像的大小打开一个合适的显示窗口,并返回窗口句柄 WindowHandle
  • dev_display 在打开的窗口中显示读取的图像。 

运行上述代码后,我们可以看到如下显示效果(此处插入从文件读取的 fabrik 图像的截图):

3.2 创建空图像

有时候我们需要创建一个空的图像变量,然后再对其进行操作。可以使用 gen_image_const 算子来创建一个具有特定类型和大小的空图像。例如:

在这段代码中,gen_image_const 创建了一个数据类型为 byte,大小为 512x512 的空图像,并将其存储在 ImageEmpty 变量中。然后通过 dev_open_window_fit_image 和 dev_display 显示这个空图像。由于是空图像,显示出来的将是一个黑色的窗口(此处插入空图像显示的截图):

 

四、区域变量的创建与赋值

4.1 使用基本几何形状创建区域

Halcon 提供了多种算子来创建不同形状的区域。例如,使用 gen_rectangle1 可以创建一个矩形区域:

上述代码中,gen_rectangle1 根据给定的左上角坐标 (100, 100) 和右下角坐标 (200, 200) 创建了一个矩形区域,并将其存储在 Rectangle 变量中。dev_display 将该矩形区域显示在打开的窗口中(此处插入矩形区域显示的截图):

类似地,使用 gen_circle 可以创建一个圆形区域:

这里 gen_circle 根据圆心坐标 (256, 256) 和半径 100 创建了一个圆形区域,并存储在 Circle 变量中,然后通过 dev_display 显示(此处插入圆形区域显示的截图):

4.2 从图像中提取区域

除了创建基本几何形状的区域,还可以从图像中提取感兴趣的区域。例如,使用 threshold 算子进行阈值分割来提取区域:

在这段代码中,首先读取名为 coins 的图像,然后使用 threshold 算子将图像中灰度值在 100 到 255 之间的像素分割出来,形成区域并存储在 Regions 变量中。最后通过 dev_display 分别显示原始图像和提取的区域(此处插入原始图像和提取区域的显示截图):

运行前图:

 

运行后图:

五、XLD 轮廓变量的创建与赋值

5.1 使用边缘检测算子生成 XLD 轮廓

边缘检测是生成 XLD 轮廓的常见方法。例如,使用 edges_sub_pix 算子进行亚像素精度的边缘检测:

在上述代码中,先读取名为 gear 的图像,然后使用 edges_sub_pix 算子对图像进行 Canny 边缘检测,检测到的亚像素精度边缘存储在 Edges 变量中。最后通过 dev_display 显示原始图像和检测到的边缘轮廓(此处插入原始图像和 XLD 轮廓显示的截图):

检测前图片:

运行后图片:

六、数值变量的创建与赋值

数值变量的创建和赋值非常简单,直接使用赋值语句即可。例如:

在上述代码中,分别创建了整数变量 num1 并赋值为 10,浮点数变量 num2 赋值为 3.14159,以及计数器变量 counter 并初始化为 0。这些数值变量可以在后续的计算和逻辑判断中使用。

运行结:

七、字符串变量的创建与赋值

字符串变量同样通过赋值语句创建和赋值。例如:

上述代码创建了三个字符串变量 filenamepath 和 label,分别赋值为文件名、文件路径和一个标签文本。字符串变量常用于处理文件操作、显示信息等场景。

运行结果:

八、总结

通过本文对 Halcon 中不同类型变量的创建与赋值的详细介绍和丰富的程序演示,我们深入了解了图像变量、区域变量、XLD 轮廓变量、数值变量和字符串变量的操作方法。掌握这些变量的使用是进行 Halcon 机器视觉编程的基础,希望读者能够通过实践进一步巩固所学知识,并在实际项目中灵活运用这些变量来实现各种复杂的视觉任务。在后续的学习中,我们还将探索更多关于 Halcon 算子的组合应用和高级编程技巧。

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

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

相关文章

优选驾考小程序

第2章 系统分析 2.1系统使用相关技术分析 2.1.1Java语言介绍 Java语言是一种分布式的简单的 开发语言,有很好的特征,在安全方面、性能方面等。非常适合在Internet环境中使用,也是目前企业级运用中最常用的一个编程语言,具有很大…

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。 安装vsftpd 为了方便实验,我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…

Uniapp 获取定位详解:从申请Key到实现定位功能

文章目录 前言一、申请定位所需的 Key1.1 注册高德开发者账号1.2 创建应用1.3 添加 Key 二、在 Uniapp 中配置定位功能2.1 引入高德地图 SDK2.2 获取定位权限 三、实现定位功能3.1 使用 uni.getLocation 获取位置3.2 处理定位失败的情况3.3 持续定位3.4 停止持续定位 四、总结 …

MATLAB电机四阶轨迹规划考虑jerk、Djerk

1、内容简介 略 126-可以交流、咨询、答疑 2、内容说明 略 在电机控制中,轨迹规划是一个重要的环节,它决定了电机如何从一个状态平滑地过渡到另一个状态。四阶轨迹规划考虑了位置、速度、加速度和加加速度(jerk),有…

输电杆塔沉降智能监测系统:如何用数据守护电网安全

产品别称:输电线路杆塔沉降在线监测装置、输电线路北斗杆塔沉降在线监测装置、杆塔地基沉降监测设备、输电杆塔沉降智能监测系统 产品型号:TLKS-PMG-BDS 一、产品概述: 在电力传输系统中,输电线路杆塔的稳定性和安全性至关重要。…

Windows搭建SVN本地服务器 + TortoiseSVN客户端

目录 一、SVN服务器搭建 二、TortoiseSVN客户端 一、SVN服务器搭建 注意:例如你已经安装Subversion,要将它卸载,因为VisualSVN会包含Subversion,确保不会发生冲突,可在Windows程序搜索Subversion 卸载它。 Apache…

harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作 牵扯到两个支持点: fs和content这两个API; 具体的操作方法看下图: 创建文件 //js 引入 import fs from "ohos.files.fs" import featureAbility from "ohos.ability.featureAbility"; // 上下…

人才画像如何助力企业 “看准人”、“看透人”

在当今竞争激烈的商业世界中,企业对于人才的需求愈发迫切。然而,如何在众多求职者中 “看准人”、“看透人”,挑选出真正适合企业的人才,却成为了许多企业面临的难题。而人才画像的出现,为企业提供了一把有力的武器。 …

LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll

搜索二维矩阵II 方法:从右上角开始搜索 我们可以从矩阵的右上角开始进行搜索。如果当前元素 matrix[i][j] 等于 target,我们直接返回 true。如果 matrix[i][j] 大于 target,说明 target 只能出现在左边的列,所以我们将列指针向左…

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化: 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…

达梦tpcc压测

造数 在这个日志输出中,主要执行了一系列数据库操作,涵盖了数据库信息检查、表的创建与数据加载、索引的添加、数据验证等步骤。具体分析如下: 数据库信息检查: 查询了数据库的版本、实例名称、日志文件大小、字符集等信息。 删…

MySQL技术公开课:Mysql-Server-8.4.4 Innodb 集群搭建与维护

MySQL技术公开课 - Mysql-Server-8.4.4 Innodb 集群搭建与维护 讲课内容: 1、Innodb集群框架介绍 2、Innodb集群部署(mysql-Server、mysql-shell、mysql-router安装配置) 3、Innodb集群维护(主备切换、启动与关闭、故障排除) Mysql-server商业版目前最新的是8.…

TCP/IP参考模型和网络协议

由于国防部担心他们一些重要的主机、路由器和互联网关可能会突然崩溃,所以网络必须实现的另一目标是网络不受子网硬件损失的影响,已经建立的会话不会被取消,而且整个体系结构必须相当灵活。 TCP/IP是一组用于实现网络互连的通信协议。Interne…

机器学习-02-机器学习算法思想以及在各行各业的应用

总结 本系列是机器学习课程的第02篇,主要介绍机器学习算法思想以及在各行各业的应用 本门课程的目标 完成一个特定行业的算法应用全过程: 定义问题(Problem Definition) -> 数据收集(Data Collection) -> 数据分割(Data…

无须高配电脑-ChatboxAI 利用SiliconCloud 接入在线deepseek

Deepseek官方api调用 方式收费,官网提供的在线推理又经常出现”服务器繁忙,请稍后再试“的问题。本文借助本地聊会客户端 ChatboxAI, 通过SiliconCloud 平台来接入各种在线大模型,包括Deepseek. ChatboxAI(完全免费) Chatbox AI…

RocketMQ及和Kafka的区别

目录 1 从场景入手2 RocketMQ是什么?3 RocketMQ及和Kafka的区别3.1 在架构上做了减法3.1.1 简化协调节点3.1.2 简化分区3.1.3 底层存储3.1.3.1 Kafka底层存储3.1.3.1 RocketMQ底层存储 3.1.4 简化备份模型3.1.4.1 Kafka备份模型3.1.4.2 RocketMQ备份模型 3.1.5 Rock…

一文深入了解DeepSeek-R1:模型架构

本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型,以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 📝 1. 输入上下文长度 DeepSeek-R1的输入上下文长…

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API,通常需要以下步骤: 1. 获取 DeepSeek API 密钥 首先,确保你已经在 DeepSeek 平台上注册并获取了 API 密钥(API Key)。如果没有,请访问 DeepSeek 的官方网站注册并申请 …

java每日精进 2.13 Ganache(区块链本地私有化部署)

需求:使用区块链实现数据村存储,记录一些不可篡改的交互信息,网络环境为内外网均需要部署; 1.准备工作(软件安装) 1.1 安装 Node.js 和 npm 1.2 安装 Ganache 地址如下:windows有可视化界面 &a…

【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)

目录 一、引言 二、MMoE(Multi-gate Mixture-of-Experts,多门混合专家网络) 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、…