halcon基础数据类型详解

合集下载

Halcon算法加速的基础知识(多核并行GPU)

Halcon算法加速的基础知识(多核并行GPU)

Halcon算法加速的基础知识(多核并⾏GPU)⼀、提⾼Halcon的运算速度,有以下⼏种⽅法:1、Multithreading(多线程)2、Automatic Parallelization(⾃动操作并⾏化)3、Compute devices,利⽤GPU提速,如果显卡性能好,⾄少可以提⾼5~10倍的运算速度⼆、多线程1、官⽅⾃带的例程get_operator_info.hdev,可以查看⽀持多线程的算⼦;1 * Determine the multithreading information2 get_multithreading_operators (TypeExclusive, TypeMutual, TypeReentrant, TypeIndependent)3 * ⾃定义函数展开之后,有get_operator_info算⼦4 * get names of all operators of the library5 get_operator_name ('', OperatorNames)6 get_operator_info (OperatorNames[Index], 'parallelization', Information)2、官⽅的⼿册C:\Program Files\MVTec\HALCON-19.11-Progress\doc\pdf\manuals\programmers_guide.pdfChapter 2 Parallel Programming and HALCONC:\Program Files\MVTec\HALCON-19.11-Progress\doc\pdf\reference\reference_hdevelop.pdfChapter 25 System --- 25.6 Multithreading三、多核并⾏看看官⽅的说明,关于HALCON-多核性能:1、算⼦⾃动并⾏化(AOP)Automatic Operator Parallelization (AOP)多核和多处理器的计算机显著提升了计算机视觉系统的速度。

HALCON编程及工程应用 第2章 HALCON编程基础

HALCON编程及工程应用 第2章 HALCON编程基础
HALCON编程基础与工程应用
2. HDevelop窗口介绍
在程序编辑窗口点击右键,在下拉菜单显示程 序运行调试中的一些设置,如图2-11所示。
图2-10 程序窗口
HALCON编程基础与工程应用
图2-11 程序调试设置
2. HDevelop窗口介绍
HDevelop启动以后,就可以开始从程序窗口输入,逐步建立一个 HDevelop 程序。要在程序中新增一行,比如加一个算子,有以下两 个步骤。 (1)首先要将光标放在新增的地方,用键盘的Shift键加上的鼠标左 键,点在要加入的地方,然后从算子菜单中选择,或是由算子窗口 来选用想要加入的数据。 (2)新的算子会出现在算子窗口中,包含它的参数等数据,此时按 下“输入”,就会将它加入程序代码中,成为新增的一行;如果按下“ 确定”,除了程序代码会新增以外,同时也会执行程序。如果按的是 “应用”,算子不会新增到程序中,但是会被执行,这样就可以方便 又有效的测试修改参数的结果。 如果只要执行某一行,可以将程序计数器(PC)置于要执行的那行 前,再用鼠标左键在该行前单击,然后按HDevelop工具栏的“单步跳 过函数”,如果单击“运行”,则程序代码都会执行,直到一个断点或 是按“停止”将其中止。
HALCON编程基础与工程应用
1. 条件语句
语义为:判断表达式的值,表达式1的值非零则执行语句组1。表达式 1的值为零而表达式2的值非零则执行语句组2,两个表达式的值都为 零则执行语句组3。
【例2-3】if条件语句实例3 cont:=2 *判断变量cont是否大于等于1,大于等于1就执行语句cont:=cont-1 if(cont>=1) cont:=cont-1 *判断变量cont是否小于等于-1,小于等于-1就执行语句cont:=cont+1 elseif(cont<=-1) cont:=cont+1 *如果cont大于-1小于1执行语句 cont:=cont+2

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(⼀⽂学会halcon基础操作,总结⾃超⼈视觉)此⽂根据《超⼈视觉 halcon启蒙班》写成,结合图⽚和例程,直观简单地介绍halcon的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求:1.识别定位2.符号识别:⼀⼆维码,OCR3.测量需求4.缺陷需求(最常见,难度最⼤)5.⼿眼标定和抓取(结合运动控制)图像处理⼀般思路1.采集2.预处理拉开灰度⼏何变换去噪:中值滤波,均值滤波,⾼斯滤波抠图3.图像分割⼆值化形态学特征选择ps:Halcon⾥区域和图像是不同概念4.识别显⽰5.通信三⼤数据类型图像,区域,XLD灰度直⽅图勾选“阈值”将灰度值在”绿线和红线之间”的以选定颜⾊进⾏填充将把圈定的阈值范围内的直⽅图均匀拉伸释放到整个直⽅图轴上数组语法* Simple tuple operationsTuple1 := [1,2,3,4,5]Number := |Tuple1|SingleElement := Tuple1[3]Part := Tuple1[1:3]Copy := Tuple1[0:|Tuple1| - 1]运⾏结果读取图⽚的四种⽅法1. ⽂件 -> 读取图⽚2. Image Acquisition -> ⾃动检测接⼝(刷新设备)-> Direct show,从摄像头直接读图3. Image Acquisition -> 选择⽂件,从图像⽂件中读取4. Image Acquisition -> 选择路径,结合正则表达式读取路径下的图⽚PS:⽤Image Acquisition读取时记得点击代码⽣成摄像头抓取模式:在可视化 -> 更新窗⼝中调整同步采集:实时抓取,⼀直抓取异步采集:只等图⽚处理完后,grab_image才开始抓取PS:更多信息包括双相机采集,可以在案例 -> ⽅法 -> 图像采集设备中学习ROI(感兴趣区域)特征检测PS:⼆值化之后的区域虽然不连通,但仍然认为是⼀个区域。

halcon算子解释

halcon算子解释

halcon算子解释
Halcon算子是Halcon软件中用于图像处理和分析任务的基本操作单元。

每一个Halcon算子都可以接收输入图像并产生输出图像或其他结果,例如区域、角度、面积等。

这些算子可以组合成更复杂的网络,以实现更高级的功能,例如识别、测量、分类、分割和跟踪任务。

Halcon的自定义算子包括算子名称、图标输入参数、图标输出参数、控制输入参数、控制输出参数等。

例如,算子名称可以是“dilation_seq”,用于顺序地扩大一个区域;或者“erosion1”,用于腐蚀一个区域。

Halcon算子的应用非常广泛,可以应用于各种图像处理和分析任务。

例如,可以使用Halcon算子进行图像增强、去噪、分割、特征提取等任务。

此外,Halcon还可以与其他编程语言和平台集成,以实现更复杂的图像处理和分析任务。

在使用Halcon算子时,需要了解每个算子的功能和参数设置,以便正确地选择和设置它们,以获得最佳的结果。

此外,还需要了解每个算子的输入和输出参数类型和格式,以确保它们与算子所需的格式匹配。

halcon中的region定义

halcon中的region定义

halcon中的region定义Halcon是一种用于机器视觉应用的编程软件,它提供了丰富的图像处理和分析工具。

在Halcon中,Region是一种常用的数据类型,用于表示图像中的特定区域。

本文将介绍Halcon 中Region的定义和常见操作。

在Halcon中,Region是一种由连续的像素点组成的集合,可以用来表示图像中的物体或区域。

Region的定义可以基于像素的坐标、形状或其他特征。

Halcon提供了多种方式来定义Region,下面将介绍其中常用的几种方法。

一种常见的方式是基于像素的坐标来定义Region。

在Halcon 中,我们可以通过指定一个像素的坐标来创建一个Region,然后通过添加其他像素的坐标来扩展这个区域。

例如,我们可以使用以下代码创建一个以(100, 100)为中心,半径为50的圆形区域:```Halconcreate_ring(Ring, 100, 100, 50)```这个代码首先创建了一个空的Region对象Ring,然后使用create_ring函数将一个圆形区域添加到Ring中。

除了使用像素的坐标,我们还可以使用形状来定义Region。

Halcon中提供了多种形状,包括矩形、椭圆、多边形等。

例如,我们可以使用以下代码创建一个矩形区域:```Halconcreate_rectangle1(Rectangle, 100, 100, 200, 150)```这个代码创建了一个以(100, 100)为左上角,宽度为200,高度为150的矩形区域。

类似地,我们可以使用其他函数来创建其他形状的区域。

除了创建Region,Halcon还提供了多种操作来修改和处理Region。

例如,我们可以使用以下代码将两个Region进行并集操作:```Halconunion(Ring1, Ring2, RingUnion)```这个代码将Region Ring1和Ring2进行并集操作,并将结果保存到RingUnion中。

halcon加减乘除运算 -回复

halcon加减乘除运算 -回复

halcon加减乘除运算-回复Halcon是一款强大的机器视觉软件,被广泛应用于工业自动化、医疗影像、交通监控等领域。

它的强大之处不仅仅在于其先进的图像处理算法,还在于其丰富的运算功能,包括加减乘除等基本运算。

下面,我将一步一步回答如何在Halcon中进行加减乘除运算。

首先,让我们了解一下Halcon的基本数据类型。

在Halcon中,数字可以用整数、浮点数和复数三种数据类型表示。

其中,整数类型表示为整数值,浮点数类型表示为带小数点的数值,复数类型表示为实部和虚部的组合。

这些数据类型可以用于各种运算操作。

Halcon中的加法运算符是"+",用于将两个数值相加。

例如,若要计算3和4的和,可以使用以下代码:Halcona := 3b := 4c := a + b这段代码首先将3赋给变量a,将4赋给变量b,然后使用运算符"+"将a和b相加,结果赋给变量c。

在代码运行后,变量c的值将变为7。

Halcon中的减法运算符是"-",用于将一个数值减去另一个数值。

以下是一个示例代码,演示如何计算9减去5的结果:Halcona := 9b := 5c := a - b这段代码将9赋给变量a,将5赋给变量b,然后使用运算符"-"将a 减去b,结果赋给变量c。

在代码运行后,变量c的值将变为4。

Halcon中的乘法运算符是"*",用于将两个数值相乘。

以下是一个示例代码,演示如何计算2乘以6的结果:Halcona := 2b := 6c := a * b这段代码将2赋给变量a,将6赋给变量b,然后使用运算符"*"将a 和b相乘,结果赋给变量c。

在代码运行后,变量c的值将变为12。

Halcon中的除法运算符是"/",用于将一个数值除以另一个数值。

以下是一个示例代码,演示如何计算10除以2的结果:Halcona := 10b := 2c := a / b这段代码将10赋给变量a,将2赋给变量b,然后使用运算符"/"将a 除以b,结果赋给变量c。

halcon的基本数据类型,数据的表示方法

halcon的基本数据类型,数据的表示方法

halcon的基本数据类型,数据的表示方法Halcon是一种用于机器视觉应用的编程语言和开发环境。

在Halcon中,有多种基本数据类型可用于存储和表示各种类型的数据。

在这篇文章中,我们将探讨Halcon的基本数据类型以及它们的表示方法。

1.整数类型:Halcon中的整数类型包括有符号整数(INT)和无符号整数(UINT)。

有符号整数的取值范围通常为-2147483648到2147483647,而无符号整数的取值范围为0到4294967295。

整数类型可以用来存储和表示像素坐标、像素灰度值等整数类型的数据。

2.浮点数类型:Halcon中的浮点数类型包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE)。

单精度浮点数可以表示小数,并具有较高的精度和较大的范围,而双精度浮点数具有更高的精度和更大的范围。

浮点数类型适用于存储和表示测量结果、图像变换矩阵等需要较高精度的数据。

3.字符类型:Halcon中的字符类型(CHAR)用于存储和表示单个字符。

字符类型通常用于存储和处理文本字符、字符串等。

4.布尔类型:Halcon中的布尔类型(BOOL)用于表示真(TRUE)和假(FALSE)的值。

布尔类型适用于存储和判断逻辑条件的结果。

5.枚举类型:Halcon中的枚举类型(ENUM)用于定义一组具有固定取值范围的符号常量。

枚举类型适用于表示具有多个离散取值选项的数据。

6.数组类型:Halcon中的数组类型用于存储和表示多个具有相同数据类型的值的有序集合。

数组可以是一维的、二维的或多维的,并且可以包含不同的数据类型,如整数、浮点数、字符等。

7.字符串类型:Halcon中的字符串类型用于存储和表示一系列字符的有序集合。

字符串类型可以包含文本字符、数字字符和特殊字符,并且可以进行字符串操作和处理。

8.元组类型:Halcon中的元组类型用于存储和表示具有不同数据类型的项的有序集合。

元组可以包含整数、浮点数、字符、数组、字符串等等。

halcon的基本数据类型,数据的表示方法

halcon的基本数据类型,数据的表示方法

halcon的基本数据类型,数据的表示方法Halcon是一种由MVTec公司开发的专业机器视觉库,广泛应用于图像处理、模式识别、机器人视觉等领域。

Halcon支持多种数据类型,每种数据类型用于表示不同类型的信息,包括图像数据、灰度值、坐标等。

1. 图像数据类型:在Halcon中,图像数据是最常见的数据类型。

Halcon支持常见的图像文件格式,如BMP、JPEG、PNG等。

图像数据在Halcon中通常以二维矩阵表示,其中每个矩阵元素代表图像的像素值。

图像数据的表示方法依赖于具体的应用场景,如可以使用灰度图像或彩色图像进行处理。

2. 灰度值类型:灰度值是图像中每个像素的亮度信息,通常用于表示图像的黑白程度。

在Halcon中,灰度值可以是8位(0-255)、16位(0-65535)或者32位(浮点数)等不同精度的整数或浮点数。

灰度值的表示方法可以通过直方图、灰度分布等统计方法得到。

可以使用Halcon提供的函数进行灰度值的变换、调整和处理。

3. 坐标类型:坐标类型用于表示图像中的位置信息。

在Halcon中,坐标通常使用二维或三维的数值表示,例如表示图像中一个点的坐标(x,y)或者表示图像中一个物体的位置和旋转角度(x,y,φ)。

坐标的表示方法可以基于像素位置或者物理坐标系统,可以使用Halcon提供的函数进行坐标的转换、变换和计算。

4. 角度类型:角度类型用于表示图像中物体的旋转角度信息。

在Halcon中,角度可以以弧度或度数表示,通常取值范围为-π到π或者0到360。

角度的表示方法可以通过直接测量或者基于特征匹配等方式得到。

可以使用Halcon提供的函数进行角度的转换、调整和计算。

5. 多边形类型:多边形类型用于表示图像中物体的轮廓信息。

在Halcon中,多边形通常由一组连续的点坐标表示,每个点的坐标按照顺时针或逆时针顺序连接形成一个封闭的轮廓。

多边形的表示方法可以基于边缘检测、轮廓提取等方式得到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

halcon基础数据类型详解#if defined(__CHAR_UNSIGNED__) || defined(__sgi)#define INT1 signed char /* integer, signed 1 Byte */#define INT1_MIN SCHAR_MIN#define INT1_MAX SCHAR_MAX#else#define INT1 char /* integer, signed 1 Byte */#define INT1_MIN CHAR_MIN#define INT1_MAX CHAR_MAX#endif#define UINT1 unsigned char /* integer, unsigned 1 Byte */#define UINT1_MIN 0#define UINT1_MAX UCHAR_MAX#define LONG_FORMAT _INT64_FORMATtypedef INT4_8 Hlong;typedef UINT4_8 Hulong;看粗体部分,可以看到Hlong型在32位的机器上其实就是long型代表4个字节32位,在64位机器上有另一种定义再来看看halcon中最重要的数据类型HTuple,在C++里面,halcon将HTuple类型封装了类,其始祖类HRootObject,这个类相当于MFC里面的CObject,halcon从HRootObject派生了HBaseArray,当然这两个类是虚基类,有一些方法需要我HTuple自己实现,当然也有一些方法可以直接用的。

这两个类在HCPPUtil里,可以看看。

HTuple类就是从HBaseArray派生,元组基类,相当于数组,具有如下的构造函数:HTuple(int l);HTuple(float f);HTuple(double d);HTuple(constchar *s);HTuple(const HCtrlVal&c);HTuple(const HTuple&in):HBaseArray() {CopyTuple(in);}HTuple(Hlong length, const HTuple&value);HTuple(const HTuple&length, const HTuple&value);HTuple(SpecialTuple d);HTuple对各种操作符进行了重载:operator HCtrlVal(void) const;HTuple operator () (Hlong min, Hlong max) const;HTuple operator () (const HTuple&min, const HTuple&max) const; HCtrlVal&operator [] (Hlong index);HCtrlVal operator [] (Hlong index) const;HCtrlVal&operator [] (const HTuple&index);HCtrlVal operator [] (const HTuple&index) const;HTuple&operator ++ (void); // nurfuer double und HlongHBool operator ! (void) const;HTuple operator~ (void) const;HTuple operator<< (const HTuple&val) const;HTuple operator<< (Hlongval) const;HTuple operator>> (const HTuple&val) const;HTuple operator>> (Hlongval) const;HTuple operator+ (const HTuple&val) const;HTuple operator+ (double val) const;HTuple operator+ (int val) const;在讲解halcon是如何维护这样一个HTuple中各种数据之前,先来看看这样一个类:class LIntExportHCtrlVal {friend class HTuple;public:HCtrlVal(void) {val.type = UndefVal; val.par.l = 0;}#if !defined(_TMS320C6X)HCtrlVal(Hlong l) {val.type = LongVal; val.par.l = l;}#endifHCtrlVal(int l) {val.type = LongVal; val.par.l = l;} HCtrlVal(double d) {val.type = DoubleVal; val.par.f = d;} HCtrlVal(constchar *s);HCtrlVal(const HCtrlVal&v) {CopyCtrlVal(v);}~HCtrlVal(void) {ClearCtrlVal();} HCtrlVal&operator = (const HCtrlVal&v);// Type conversionint ValType() const {return val.type;} operatorint(void) const {return I();}#if !defined(_TMS320C6X)operator Hlong(void) const {return L();}#endifoperatordouble(void) const {return D();} operatorconstchar*(void) const {return S();} operatorconst Hcpar&(void)const {return HCPAR();}// Access contentsdouble D() const;HlongL() const;int I() const;constchar * S() const;const Hcpar& HCPAR()const;// ArithmeticsHCtrlVal operator + (const HCtrlVal&val) const;HTuple operator + (const HTuple&val) const;HCtrlVal operator - (const HCtrlVal&val) const;HTuple operator - (const HTuple&val) const;HCtrlVal operator * (const HCtrlVal&val) const;HTuple operator * (const HTuple&val) const;HCtrlVal operator / (const HCtrlVal&val) const;HTuple operator / (const HTuple&val) const;HCtrlVal operator % (const HCtrlVal&val) const;HTuple operator % (const HTuple&val) const;HBool operator != (const HCtrlVal&val) const;HBool operator != (const HTuple&val) const;HBool operator == (const HCtrlVal&val) const;HBool operator == (const HTuple&val) const;HBool operator>= (const HCtrlVal&val) const;HBool operator>= (const HTuple&val) const;HBool operator<= (const HCtrlVal&val) const;HBool operator<= (const HTuple&val) const;HBool operator> (const HCtrlVal&val) const;HBool operator> (const HTuple&val) const;HBool operator< (const HCtrlVal&val) const;HBool operator< (const HTuple&val) const;constchar *ClassName(void) const { return"HCtrlVal"; }int Version(void) const;int Revision(void) const;constchar *Creation(void) const;private:// DataHcparval;// Value: one of the three types and type specifyer// Support operationenvoid ClearCtrlVal();void CopyCtrlVal(const HCtrlVal& source);};typedef struct{Hpar par; /* values */INT1 type; /* type flag */}Hcpar;/* parameter passing for the C interface */typedef union{INT4_8 l; /* 4/8 byte integer (input) */double f; /* 8 byte real(input) */char *s; /* pointer to strings(input) */} Hpar; /* parameter passing for the C interface */typedef union{INT4_8 *l; /* 4/8 byte integer (output) */double *f; /* 8 byte real(output) */char *s; /* pointer to strings(output) */VOIDP p; /* pointer to var. of any type (e.g.tuple)(output)*/} Hvar; /* parameter passing for the C interface */仔细看我用红色粗体并加大的部分,这四段代码可以说是halcon维护HTuple这种数据类型的精髓了。

相关文档
最新文档