题目:halcon的数据类型

作者:李黛色

功能:halcon基础语法

个人学习记录,如有错误,欢迎更正。

两类参数:

1、图形参数Iconic (image, region, XLD)

2、控制参数Control (string, integer, real, handle)

0.算子

Halcon算子的参数中,

算子operator:执行特定图像处理任务的函数和命令。

语法,依次为:

(输入图形参数、输出图形参数、输入控制参数、输出控制参数;)

注意:输入参数不会被算子改变。

halcon图像的一些基本数据结构:

1.图形参数

  1. image : 图像

    a. halcon的图像类型,矩阵数据组成,矩阵每个值表示一个像素。

    b. 每一个像素包含的信息不同,通常将图像分为:二值图像、灰度图像、rgb图像。

    c. image type: Byte complex cyclic direction int1 int2 int4 int8 uint2 real
  2. region : 区域

    a. 图像的一块区域

    b. 该区域数据由点的坐标组成,表达的意义类似于一个范围

    c. 可以用region创建一个感兴趣区域ROI(region of interset)

    d. 形状任意,可以含洞,可以不连续点
  3. xld : 亚像素轮廓

    a. 区域的轮廓,region边缘的连续的点组成。

    b. 为什么需要亚像素精度,图像Image和区域region这些数据结构是像素精度。

    c. 边缘轮廓分两种:

    ⅰ. Contours轮廓,是一系列的点连接,点之间的距离大约是一个像素

    ⅱ. Polygons多边形,点之间的距离较大,是用最少的线来描述这个轮廓

    d. 是一个轮廓函数,不是基于像素,可以精确到像素点内部的一种描述。

    对比region 和 xld

    region,边是用每个小方块(像素)组成的

xld,线和每个像素(小方块)会有不同的交点,haolcon自己算

2.控制参数

  1. string : 字符串

    a. 单引号包裹
  2. integer :整数
  3. float :浮点数
  4. 布尔值 :true/false 1/0
  5. real : 实数
  6. tuple :元组

    a. 用于存储图像,一副或多幅图片

    b. 其中的数据类型,控制类型:整型、实数型、字符串型,可混搭;

    c. 注意:数据为iconic参数类型时,最小索引是1;当为Control参数类型时,最小索引是0。

    d. 例子:[1,'abd',3.14,image]
  7. handle : 句柄

    a. 标识符ID(唯一),引用某个已打开的资源或管理

    b. 用于管理窗口、文件等资源

    c. 管理一组复合数据的变量

    d. 例子:dev_open_windows() 算法返回窗口句柄

    e. 例子:窗口、保存创建的模板、采集相机等均以handle来标识要操作的对象

3.变量声明与赋值

  1. 变量无需声明
  2. 直接使用 := 赋值
  3. 变量名区分大小写
  4. 首字母不能是数字
  5. 例子:

    a. a := 1

    b. b := 'hello'

    c. image := read_image()

4.名词注释

图像 :图像的本质是矩阵。

像素 :图像放大到极致后可以看到一个最小的,单色的正方形方块,这叫一个像素。

矩阵 :的每个元素就是该点像素方块的灰度值。

灰度 :表征亮度的量;

灰度值 :灰度0为黑,255为白(0为黑,1为白)。

分辨率 :图像宽高的信息。横向有多少像素点,纵向有多少像素点。

通道 :图像的颜色如何表示?相当于叠图。RGB

亚像素 :

亚像素 Sub Pixel,面阵摄像机的成像面以像素为最小单位。

宏观上,两个像素之间有5.2微米的距离,可以看作是连在一起的。

微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。

参考文章:

  1. https://zhuanlan.zhihu.com/p/471507066
  2. https://blog.csdn.net/zxmyoung/article/details/122238144
  3. https://blog.csdn.net/laoyao54/article/details/51496065
  4. https://baike.baidu.com/item/亚像素/7904986
  5. https://www.qinglite.cn/doc/10076476352491b16

总结:千锤万凿出深山

halcon_01_HALCON基础语法变量与数据类型的更多相关文章

  1. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

  2. openresty开发系列13--lua基础语法2常用数据类型介绍

    openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔)布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假" ...

  3. java(二、基础语法和基本数据类型)

    Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...

  4. Java基础语法和基本数据类型

    Java基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 对象:对象是类的一个实例,有状态(属性)和行为(方法). 类:类是一个模板,他描述一类对象的行为 ...

  5. javascript基础语法——变量和标识符

    × 目录 [1]定义 [2]命名规则 [3]声明[4]特性[5]作用域[6]声明提升[7]属性变量 前面的话 关于javascript,第一个比较重要的概念是变量,变量的工作机制是javascript ...

  6. Python基础语法,基本数据类型及相关操作

    ---恢复内容开始--- python文件 文件开头要有  #!/usr/bin/ python        --在linux中是告诉系统phthon的路径是在/usr/bin/ python目录下 ...

  7. go基础语法-变量定义

    1.基础定义 变量类型在变量名后 var a int var s string 2.定义并赋值 var a,b int = 1,2 var s string="abc" 3.类型推 ...

  8. python基础之变量与数据类型

    变量在python中变量可以理解为在计算机内存中命名的一个存储空间,可以存储任意类型的数据.变量命名变量名可以使用英文.数字和_命名,且不能用数字开头使用赋值运算符等号“=”用来给变量赋值.变量赋值等 ...

  9. typescript基础语法--变量/函数/指令/类

    博客地址 :https://www.cnblogs.com/sandraryan/ 要把ts文件引入到html中,首先要转码为js文件. 步骤: 终端运行: npm i -g typescript t ...

  10. 开发基础 (变量、数据类型、格式化输出、运算符、流程控制、while循环)

    一.变量 name = "SmallNine" 等号前面是变量名(标识符),等号后面是变量值 变量的主要作用:就是把程序运算的中间结果临时存到内存里,已备后面的代码继续调用. 变量 ...

随机推荐

  1. 用AI做了个动态下发微信群二维码应用

    微信群的二维码每周都要更新一次,比较麻烦.于是搞了个简单的上传/下发的 Web 应用. 下面是优化前后流程,虽然看似步骤少了一步,但大大节省了时间. 主要功能 常见类型图片上传,支持删除,提供外链访问 ...

  2. codeup之分数序列求和

    Description 有如下分数序列 求出次数列的前20项之和. 请将结果的数据类型定义为double类型. Input 无 Output 小数点后保留6位小数,末尾输出换行. Sample Inp ...

  3. 极简版闹钟(java)

    package javaBasic; import java.awt.Toolkit; import java.awt.event.*; import java.text.SimpleDateForm ...

  4. 基于ROS2/MoveIt!的工业机械臂控制系统开发全攻略

    1. 系统架构设计 1.1 系统组成模块 [Vision System] --> [Perception Node] | | [Gazebo Sim] <--> [ROS2 Cont ...

  5. Java子类上加lombock注解@Data或者@ToString,日志中不包括父类的属性

    问题描述:Java子类上加lombock注解@Data或者@ToString,在翻阅日志的时候,发现不打印父类的属性. 问题分析:@Data在编译时会自动为实体类添加setter.getter和toS ...

  6. 【mklink】创建符号链接

    场景 我通常用这个指令将C盘的文件转移到D盘中,或者是把一定要安装在C盘的软件所占用的空间转移到D盘.但是常常不记得参数和顺序. 指令通用格式 C盘的文件转移到D盘中 假设要把C:\abc\这个文件夹 ...

  7. 记录第一次公司内部分享:如何基于大模型搭建企业+AI业务

    Hello, 大家好,我是程序员海军, 全栈开发 |AI爱好者 | 独立开发. 记录第一次在公司内部分享AI+业务 落地实践. 如今,AI时代带来的无限可能性,很多业务都值得从做一遍. 最近,老大参加 ...

  8. 手摸手教你从生成CRD到编写自定义控制器

    介绍 我们可以使用code-generator 以及controller-tools来进行代码自动生成,通过代码自动生成可以帮我们自动生成 CRD 资源对象,以及客户端访问的 ClientSet.In ...

  9. Spring Cloud Gateway实现分布式限流和熔断降级

    小伙伴们,你们好呀!我是老寇!一起学习学习gateway限流和熔断降级 一.限流 思考:为啥需要限流? 在一个流量特别大的业务场景中,如果不进行限流,会造成系统宕机,当大批量的请求到达后端服务时,会造 ...

  10. java 分批次读取大文件的三种方法

    1. java 读取大文件的困难java 读取文件的一般操作是将文件数据全部读取到内存中,然后再对数据进行操作.例如 Path path = Paths.get("file path&quo ...