Halcon —— 图像像素类型与转换

图像类型

就目前工业领域主流的图像处理工具halcon来讲,有以下几种图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。Halcon —— 图像像素类型与转换_第1张图片
‘byte’ 每像素1字节,无符号 值范围: (0到255)
‘int1’ 每像素1字节,有符号 值范围: (-128到127)
‘uint2’ 每像素2字节,无符号 值范围: (0到65535)
‘int2’ 每像素2字节,有符号 值范围: (-32768到32767)
‘int4’ 每像素4字节,有符号 值范围: (-2147483648到2147483647)
‘int8’ 每像素8字节,有符号(仅适用于x64系统)
‘real’ 每像素4字节,浮点类型,6位有效十进制数字精度 值范围: (-3.4e38到3.4e38)
‘complex’ real类型的两个矩阵,向量
‘vector_field_relative’ real类型的两个矩阵,向量
‘vector_field_absolute’ real类型的两个矩阵,绝对坐标
‘direction’ 每像素1字节,无符号 值范围: (0到179),角度除以2
注意:数值180到254被自动设置为值255。
‘cyclic’ 每像素1字节,无符号,循环算术 范围: (0到255)

转换

halcon自转换

相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。

但为什么要进行转换呢?总结一下,有一下几种原因:
1.如byte和unit2两种都属于无符号类型,如果涉及到图像相减操作的时候,就需要转为有符号类型,生成真实值。
2.涉及到遍历图像操作时,如果数组的长度为长宽的积,且超过图像的像素位数最大值,会导致程序报错,必须给数组更大的空间,这就需要进行类型转换。
3.如果高像素值的图像想转为低像素值的图像,不能直接转换,需通过scale_image算子先将图像像素进行尺度变换。

halcon转C#类型

1.int,double,string,IntPtr
均通过Htuple类型的变量名加.I(),.D(),.S(),.IP()完成。

引用文章如下:
halcon最全图像类型格式介绍

你可能感兴趣的:(Halcon学习笔记,图像处理)