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

机器视觉--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 算子的组合应用和高级编程技巧。


http://www.kler.cn/a/545942.html

相关文章:

  • 【ICP/EDI教程】增值电信年报网络信息安全表存档记录 申请的时候对着抄
  • 两步在 Vite 中配置 Tailwindcss
  • 【git-hub项目:YOLOs-CPP】本地实现02:跑通项目了
  • Humanoid Robot Price Break 人形机器人价格突破
  • nats 消息系统架构
  • 【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】
  • 【自学笔记】人工智能基础知识点总览-持续更新
  • xpath语法以及基本使用
  • npm安装时无法访问github域名的解决方法
  • 视觉定位VPS的现状与未来
  • 华纳云:如何从服务器日志中发现僵尸进程?
  • unity 实时光为什么无法切换为烘焙光
  • html css js网页制作成品——HTML+CSS+js茉酸奶的茶网页设计(5页)附源码
  • 深度整理总结MySQL——Expalin指南(一)
  • OpenCV机器学习(3)期望最大化(Expectation-Maximization, EM)算法cv::ml::EM
  • 【C/C++算法】从浅到深学习--- 二分查找(图文兼备 + 源码详解)
  • QEMU参数与使用
  • 日语发音的节拍
  • 后台终端方法
  • Linux系统运行模式和链接