机器视觉--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_imagedev_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。这些数值变量可以在后续的计算和逻辑判断中使用。

运行结:

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

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

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

运行结果:

八、总结

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

相关推荐
誉鏐7 分钟前
PyTorch复现线性模型
人工智能·pytorch·python
我要昵称干什么8 分钟前
基于S函数的simulink仿真
人工智能·算法
向上的车轮9 分钟前
NOA是什么?国内自动驾驶技术的现状是怎么样的?
人工智能·机器学习·自动驾驶
AndrewHZ33 分钟前
【图像处理基石】什么是tone mapping?
图像处理·人工智能·算法·计算机视觉·hdr
Ai尚研修-贾莲33 分钟前
基于DeepSeek、ChatGPT支持下的地质灾害风险评估、易发性分析、信息化建库及灾后重建
人工智能·chatgpt
SelectDB技术团队1 小时前
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
大数据·数据库·数据仓库·人工智能·ai·数据分析·湖仓一体
weixin_435208161 小时前
通过 Markdown 改进 RAG 文档处理
人工智能·python·算法·自然语言处理·面试·nlp·aigc
大数据在线1 小时前
AI重塑云基础设施,亚马逊云科技打造AI定制版IaaS“样板房”
人工智能·云基础设施·ai大模型·亚马逊云科技
hello_ejb31 小时前
聊聊Spring AI的RetrievalAugmentationAdvisor
人工智能·spring·restful
你觉得2051 小时前
浙江大学朱霖潮研究员:《人工智能重塑科学与工程研究》以蛋白质结构预测为例|附PPT下载方法
大数据·人工智能·机器学习·ai·云计算·aigc·powerpoint