Halcon—Tuple中符号的含义

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导
 

实例一(3d_coordinates.hdev):

for I := 1 to NumImages by 1

read_image (Image, 'calib/calib-3d-coord-'+I$'02d')——C:\Program Files\MVTec\HALCON-10.0\images\的calib文件夹中开头是calib-3d-coord-的图像。I$'02d'表示后面的数字是两位数,即0+‘I’。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 

实例二(3d_position_of_circles.hdev):

Dir := 'metal-parts'

for I := 1 to 5 by 1

 read_image (Image, Dir + '/work_sheet_'+ I$'.2')

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

实例三(autobahn.hdev):

for i := 0 to 28 by 1

    read_image (ActualImage, 'autobahn/scene_'+(i$'02'))

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 综合上面的几个实例我们可以看出I$'02d')相当于I$'.2'相当于(i$'02')

实例四(ball_seq.hdev):

ImageNames := 'die/'+['die_02','die_03','die_04','die_07']

read_image (Bond, ImageNames[0])

我把ImageNames[0]中的的0换成1读出的第一张图片就是die_03.png;换成2读出的第一张图片就是die_04.png;换成3读出的第一张图片是die_07.png。刚好与['die_02','die_03','die_04','die_07']里面的相对应。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

实例五:




7.5.1   General Features of Tuple Operations——元组操作的一般特征

请注意,在所有以下表变量和常数已通过字母表示允许的数据类型取代。这些字母提供有关可能的限制,定义区域。字母和它们的意义列于表7.3。对这些符号的操作只能应用于指定的类型参数或表达式,返回一个结果。

符号名称i, a, l和s原子可以表示元组(元组长度为1)以及任意长度的元组。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

integer:整数       arithmetic:算法        boolean:布尔体系       atomic:原子的

操作通常假设原子元组描述。如果数组包含多个元素,大多数操作的工作方式如下:

1、如果一个元组的长度为1,其他的元组中的所有元素相结合,与所选择的操作该单一值;

如果两个元组具有的长度大于1,这两个元组必须具有相同的长度(否则会发生运行时错误)。在这种情况下,所选择的操作适用于所有具有2、相同索引的元素。由此产生的元组的长度是相同的输入元组的长度;

3、如果一个元组的长度为0([]),运行时错误发生。

在表7.4中,你可以找到一些例子进行算术运算元组。要特别注意的顺序执行字符串串联。 HDevelop基本的算术运算符号是+, - ,*,/。 但+是一种二态操作,请注意:如果两个操作数都是数字,它增加了数字。如果至少有一个操作数是一个字符串,它连接两个操作数为字符串。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.2   Assignment——任务

HDevelop ,assignment就是一个操作。要使用assignment,你必须用(Input, Result)的形式。这个操作符具有以下语义: Input (assignment的右侧) ,并将其存储在Result(assignment的左侧)中 。然而,在程序文本中的分配代表赋值运算符通常的语法为Result := Input。下面的例子概括assignment在HDevelop与 C的语法和转换版本之间的差异:

分配在C语法

u = sin(x) + cos(y)

HDevelop使用赋值运算符中定义

assign(sin(x) + cos(y), u)

这是在程序窗口中显示

u := sin(x) + cos(y)

如果该表达式的结果并不需要被存储到一个变量中,可以直接使用表达式的任何运算符作为输入值。但只要所得值需要多次使用或变量必须初始化就要用assignment(例如,一个循环)。

第二个赋值运算符是 insert(Input, Value, Index, Result) 。它被用来分配的元组元素。如果第一个输入参数,和第一输出参数是相同的,该呼叫

insert (Areas, Area, Radius-1, Areas)

作为一个操作调用的程序文本中未显示,但在更直观的形式为:

Areas[Radius-1] := Area

举一个例子:

assign([1,2,3], Area)

assign(9, Areas)

insert(Areas, Area, 1, Areas)

设置Areas为[ 1,9,3 ] 

为了通过insert构造一个元组,通常是一个空的元组作为初始值,并在一个循环中插入元素:

Tuple := []

for i := 0 to 5 by 1
  Tuple[i] := sqrt(real(i))
endfor

正如你可以看到的例子,一个元组的指数从0开始。一个元组的一个插入,也可以以下列方式添加到元组的`back'或'front'。元组串联操作,可以用上逗号‘,’。在这里,操作assign 可用下面的代替:

 assign([Tuple,NewVal],Tuple)转换为  Tuple := [Tuple,NewVal]

如果索引的位置是介于两者之间,已使用插入操作。它需要输入以下参数:首先应插入新值的元组,然后将新值作为第三个输入参数的索引位置。得到的结果(第四个参数)与输入的元组几乎是相同的,除了上面的定义的索引位置的新值(见上面的例子)。

在下面的示例中,区域通过圆扩张,并和之后的区域被存储到元组区。在这种情况下,插入操作被使用。

  read_image (Mreut, 'mreut')

  threshold (Mreut, Region, 190, 255)

  Areas := []

  for Radius := 1 to 50 by 1

  dilation_circle (Region, RegionDilation, Radius)

  area_center (RegionDilation, Area, Row, Column)

  Areas[Radius-1] := Area

  endfor

请注意,第一,变量区域必须进行初始化,以避免运行时错误。在这个例子中地区被初始化为空的元组([]) 。而不是插入操作分配与元组串联

 Areas := [Areas,Area]

可以使用,因为该元素附加在后面的元组中。更多的例子可以在程序assign.dev中发现 。

7.5.3   Basic Tuple Operations——基本元组操作

 一个基本的元组操作可选择一个或多个值,结合元组(级联)或得到的元素数(见表7.5作业对含有控制数据的元组)。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

注意:[[t]] = [t] = t

|t|返回一个元组元素的数目。从零到元素数减一的元素范围的指标(即|t|-1)。因此,选择指数必须在此范围内。(请注意对象的指标(例如,select_obj)从1到元素的编号范围。)

Tuple := [V1,V2,V3,V4]

for i := 0 to |Tuple|-1 by 1

fwrite_string (FileHandle,Tuple[i]+'\n')

endfor

在下面的例子中,该变量包含[2,2,3,'a','a',2,3,'b','b']

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 进一步的例子可以在程序tuple.dev中发现。HALCON算子对应的基本元组操作列于表7.5。

请注意,这些直接操作不能用于标志性的元组,即,标志性的对象不能从一个元组使用[ ],其数量不能使用| |直接测定。然而,为了这个目的,HALCON操作提供执行相应的任务。表7.6中你可以看到元组操作控制数据的工作(这是通过assign or insert)。表中符号t表示控制元组,符号p和q代表符号元组。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.4   Tuple Creation——元组创建

  assign ([],empty_tuple)                                                                      empty:=[]

  assign (4711,one_integer)                         显示为                          one_integer := 4711

  assign ([4711,0.815],two_numbers)                                                two_numbers := [4711,0.815]


assign ([],tuple)                                                                                      tuple := []

for (1,100,1,i)                                                  显示为                           for i := 1 to 100 by 1

assign ([tuple,4711],tuple)                                                                    tuple := [tuple,4711]

endfor                                                                                                      endfor


因为这不是很方便的一个特殊功能称为gen_tuple_const是可构造一个元组,一个给定的长度,其中每个元素具有相同的值。使用此功能,从上面的程序被简化为:

assign(gen_tuple_const(100,4711),tuple)                                 显示为               tuple := gen_tuple_const(100,4711)

如果我们要构建一个元组相同的长度为一个给定的元组得到一个简单的解决方案有两种方法,第一种是基于gen_tuple_const

assign(gen_tuple_const(|tuple_old|,4711),tuple_new)             显示为                tuple_new := gen_tuple_const(|tuple_old|,4711)

第二个是有点棘手,使用算术运算功能:

assign((tuple_old * 0) + 4711,tuple_new)                                   显示为                tuple_new := (tuple_old * 0) + 4711

在这里,我们得到第一个元组具有相同的长度与每一个元素设置为零。然后,我们添加常数的每个元素。在具有不同值的元组的情况下,我们必须使用循环版本的值分配到每个位置:

assign([],tuple)

for (1,100,1,i)

assign([tuple,i*i],tuple)

endfor

which is displayed as

tuple := []

for i := 1 to 100 by 1

tuple := [tuple,i*i]

endfor

在这个例子中,我们构造一个元组,从12到1002的平方值。

7.5.5   Basic Arithmetic Operations——基本算术运算

提供基本的算术运算的概述,请参阅表7.7。所有的操作都是左结合的,除了右结合元负运算符。赋值通常是从左至右进行。但是,括号可以改变赋值的顺序和一些操作有比别人更高的优先级(参见“7.5.14”)

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

HDevelop中的算术运算符合通常的定义。表达式可以有任意数量的括号。

除法运算符(A1/ A2)可以应用到整数以及实数。如果其结果是实数类型,则至少有一个操作数是实数类型。如果两个操作数都是整数类型,操作是一个整数除法。其它的算术运算符(乘法,加法,减法,和否定),可以适用于任一整数或实数。如果至少有一个操作数是实数,其结果将是一个实数。示例:

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导例子可以在arithmetic.dev中找到

7.5.6   Bit Operations——位操作
 本节介绍了用于处理位数字的操作。运算数必须是整数。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导


lsh(I1,I2)的结果是一个位左移应用的I1 I2倍。如果没有溢出,这是相当于一个乘法2i2。rsh(I1,I2)的结果是一个位元右移应用的i1 i2倍。对于非负的i1,这是相当于除数2i2。对于负的i1结果取决于所用的硬件。 lsh和rsh的结果是不确定的,如果第二个操作数为负值,或值大于32。更多的例子可以发现在程序bit.dev。

7.5.7   String Operations——字串操作

有几个字符串操作,可修改,选择,和组合字符串。此外,有些操作允许转换成数字(实数和整数)为字符串。

concatenate:联系、连接                substring:子链                          

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 $(字符串转换)

$将数字转换为字符串或修改字符串。操作有两个操作数:第一个($左边)是数字,已被转换。第二个($右边)指定的转换。这是类似于C语言编程的printf()函数格式字符串。这个格式字符串由以下四个部分组成

 :

<flags><width>.<precision><conversion> 

这个也可以用[-+ #]?([0-9]+)?(\.[0-9]*)?[doxXfeEgGsb]?表示

这大致可以转换为零或更多的字符在第一支架对后跟零个或更多位数,任选一个点可以跟着数字后跟从最后一架双转换字符)

Halcon中符号的含义 - Halcon机器视觉 - Halcon入门指导

<flags>

零个或多个标记,以任何顺序,它修改的转换规格的意义。旗标可以包含下列字符:

—:转换的结果是左对齐的领域内。

+:一个符号转换的结果总是开始于一个标志,+或—。

<space>:如果一个符号转换的第一个字符是不是一个符号,空格是r前缀

 #

该值将转换为“交替形式”。d和s(见下文)的转换,这标志是无效。o转换(见下文),它增加了精密力结果的第一个数字是零。x或X转换(见下文),一个非零的结果有0x或0X做前缀。e,E,f,g,G转换,结果总是包含一个基数字符。g和G转换,尾随零不是从结果中删除,相反,与平常不同。

<width>

指定一个最小字段宽度的小数位数的可选字符串。一个输出字段,如果转换后的值的字符比字段宽度减少,它是在左边(或右,如果左调整标志了)的字段宽度。

<precision>













字符串串联(+)可以应用于字符串或数值类型组合;如有必要,先被转化成字符串运算数(根据他们的标准表示)。至少一个操作数必须是一个字符串,已经使操作者可以作为一个字符串的concatenator。在下面的例子中的一个文件的名称(例如'Name5.tiff')。为了这个目的,两个字符串常量('name' '和'tiff’)和一个整数(循环指数i)连接:

for i := 1 to 5 by 1

read_image (Image, 'Name'+i+'.tiff')

endfor

7.5.8   Comparison Operations——比较运算

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 7.5.9   Boolean Operations——布尔运算

 布尔运算and, xor, or,以及not(和、异、或,否)只是长度的1元组定义。

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.10   Trigonometric Functions——三角函数

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

 7.5.11   Exponential Functions——幂指数功能

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.12   Numerical Functions——数值计算功能

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.13   Miscellaneous Functions——杂项功能

random:任意、随机         inverse:倒转、相反            ord——order                        chr——character

chrt——CHR+Tuple           rand——random                  sort:排列                            reverse:反转、调换       

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

7.5.14   Operation Precedence——运算优先级

Halcon—Tuple中符号的含义 - Halcon机器视觉 - Halcon入门指导

原文链接:http://k594081130.blog.163.com/blog/static/21835901320138923731316/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果我是博客园的产品经理【上】

题记 这是一个系列文章的第一篇 我打算写一个《如果我是XXX的产品经理》系列&#xff0c; 因为我是博客园的老用户了&#xff0c;这个系列又是写在博客园上的 所以先拿博客园开刀&#xff0c; 后面估计还会写QQ音乐&#xff0c;有道云笔记&#xff0c;github&#xff0c;foxmai…

Halcon学习笔记(三)---数据类型

Halcon学习笔记&#xff08;三&#xff09;---数据类型halcon只能在单独行进行注释&#xff0c;不能在语句后面进行注释。1、tuple(元组&#xff0c;重数)赋值符号“&#xff1a;”tuple算子&#xff1a;&#xff08;1&#xff09;变量定义与加减乘除运算代码如下&#xff1a;*…

论文笔记之:RATM: RECURRENT ATTENTIVE TRACKING MODEL

RATM: RECURRENT ATTENTIVE TRACKING MODEL ICLR 2016 本文主要内容是 结合 RNN 和 attention model 用来做目标跟踪。 其中模型的组成主要是&#xff1a; 1. an attention model 主要用来从输入图像中提取 patch&#xff1b; 2. RNN 用来预测 attention 参数&#xff0c;即&am…

【分享】WeX5的正确打开方式(5)——绑定机制

今天继续WeX5的绑定机制。 需求分析 记账本要实现的效果就是可以展示所有账单&#xff0c;还能实时动态编辑每一笔账单&#xff0c;官方案例的效果图如下&#xff1a; 展示页&#xff1a; 编辑页 个人觉得官方案例加入了许多元素&#xff0c;不熟悉的同学每一个点都很难理解&am…

HALCON常用算子(HALCON13.0)

HALCON常用算子&#xff08;HALCON13.0&#xff09;Chapter 9--Developdev_clear_window ( : : : )功能&#xff1a;清除活动图形窗口的内容dev_close_window ( : : : )功能&#xff1a;关闭活动图形窗口。dev_display ( Object : : : )功能&#xff1a;在现有图形窗口中显示图…

关于未捕获异常的处理(WPF)

转载自&#xff1a;http://www.cnblogs.com/chenxizhang/p/3280947.html 这一篇文章来谈谈对于WPF应用程序开发中的未捕获异常的处理。 首先&#xff0c;我们当然是要求应用程序开发人员&#xff0c;尽可能地在程序可能出现异常的地方都去捕捉异常&#xff0c;使用try…catch的…

设计模式--23、访问者模式

访问者模式是一种较为复杂的行为型设计模式&#xff0c;它包含访问者和被访问元素两个主要组成部分&#xff0c;这些被访问的元素通常具有不同的类型&#xff0c;且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素&#xff0c;而划价人…

C#串口SerialPort常用属性方法

SerialPort(): //属性 .BaudRate;获取或设置波特率 .BytesToRead;得到 接收到数据的字节数 .BytesToWrites;得到送往串口的字节数 .DataBits;获取或设置数据位 .IsOpen;获取一个值&#xff0c;判断串口是否打开 .Pariy;获取或设置校验位 .PortName;串口名称 .ReadBufferSize;获…

NTFS文件系统的简述

NTFS文件系统的设计思想基于稳定性、和安全性并支持大容量存储设备的文件系统&#xff1a;1.它提供日志可以增加文件系统的容错率&#xff0c;可以有效的保护系统的安全。NTFS是一个可恢复的文件系统。在NTFS分区上即使强制关机后&#xff0c;一般也不需要运行CHKDSK命令修复磁…

Rxjava基础

现在很多Android App的开发开始使用Rxjava&#xff0c;但是Rxjava以学习曲线陡峭著称&#xff0c;入门有些困难。经过一段时间的学习和使用&#xff0c;这里来介绍一下我对Rxjava的理解。 说到Rxjava首先需要了解的两个东西&#xff0c;一个是Observable&#xff08;被观察者&a…

『协议』XML-RPC 协议规格说明

为什么80%的码农都做不了架构师&#xff1f;>>> 这篇文章提供所有实现XML-RPC协议所需要的内容。 一览 XML-RPC是一个工作在因特网上的远端程序调用&#xff08;Remote Procedure Calling&#xff09;协议。 XML-RPC消息是一个HTTP-POST请求&#xff08;Request&…

Qt之QLineEdit详解(附源码)

原博客地址&#xff1a;http://blog.csdn.net/liang19890820/article/details/52044639&#xff0c;感谢原作者总结和分享。 简述 QLineEdit是一个单行文本输入框。 QLineEdit允许用户输入和编辑单行纯文本&#xff0c;提供了很多有用的编辑功能&#xff0c;包括&#xff1a;撤…

POJ 1323 Game Prediction#贪心

(&#xff5e;&#xffe3;▽&#xffe3;)&#xff5e;* //既然是求最少能胜几次 //说明对方是要尽可能让我输 //但为了避免浪费&#xff0c;对方会用比我的牌大的牌中的最小pip的牌来击败我 #include<iostream> #include<cstdio> #include<cstring> #inclu…

qt学习之键盘事件( keyPressEvent)

//最近一直忙于做驱动&#xff0c;对底层东西很是好奇&#xff0c;好奇键盘是 怎么区分每个键值的&#xff0c;又是怎么响应的&#xff01;因此&#xff0c;就有了下面这些代码//环境windows 工具qt 语言c//在主窗体类中声明键盘响应函数 void keyPressEvent(QKeyEvent * event…

C#json数据的序列化和反序列化(将数据转换为对象或对象集合)

引用 System.Runtime.Serialization.Json 转载于:https://www.cnblogs.com/a849788087/p/5645828.html

位图(bmp)文件格式分析

from&#xff1a;https://blog.csdn.net/qingchuwudi/article/details/25785307 位图(bmp)文件格式分析 作者&#xff1a;深蓝&#xff08;由博主分享&#xff09; 一、什么是位图 计算机能以位图和矢量图格式显示图像。 1、位图(Bitmap)&#xff1a; 图像又称点阵图或光…

汇付 支付,痛苦的接入过程

有文档&#xff0c;但是&#xff0c;写文档的人明白&#xff0c;看文档的人很有难度。 没有SDK&#xff0c;要自已写。 然后&#xff0c;钱的流入流出都必须经过虚拟钱包&#xff0c;提现还要绑取现卡&#xff0c;这个我也能理解&#xff0c;不能理解的是&#xff0c;订单退款&…

随笔分类 - HALCON学习例程中文详解

from: https://www.cnblogs.com/chita/category/563492.html随笔分类 - HALCON学习例程中文详解HALCON学习例程中文详解跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距摘要: 跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距* This example program demonstr…

WinCE6 如何去掉控制面板中的应用?

在WINCE600/PUBLIC/WCESHELLFE/OAK/FILES/wceshellfe.bib把对应的cpl 干掉例如区域设置 好像是2个 ; CESYSGEN IF WCESHELLFE_MODULES_INTLPintlp.cpl $(_FLATRELEASEDIR)/intlp.cpl NK SH ; CESYSGEN ENDIF ; CESYSGEN IF WCESHELLFE_MODULES_INTLLintll.cpl $(_FLATRELEASEDI…

软件自动更新解决方案及QT实现

from&#xff1a;https://blog.csdn.net/hulinhulin/article/details/46839107软件自动更新解决放案及QT实现...11 文件的版本控制-XML.22 更新程序的实现...22.1 界面设置...22.2 程序功能...32.2.1 下载网络数据...32.2.2 XML文件的分析...62.2.3 下载XML文件的DownLoadXML函…