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,一经查实,立即删除!

相关文章

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…

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

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

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

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

『协议』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;撤…

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; 图像又称点阵图或光…

java 基本功 —— 内存相关

2019独角兽企业重金招聘Python工程师标准>>> 首先我们来说说内存&#xff0c;因为从内存的角度来出发来分析一些变量&#xff0c;引用或者对象的生命周期会更好理解一些。 java是一门编程语言&#xff0c;他跟C有什么不同呢&#xff1f;本质上&#xff0c;他们都是一…

DOM事件处理有三个阶段

DOM事件处理有三个阶段&#xff1a; 捕捉阶段&#xff08;capture phase&#xff09;&#xff1a;从最上层元素&#xff0c;直到最下层&#xff08;你点击的那个target&#xff09;元素。路过的所有节点都可以捕捉到该事件。命中阶段&#xff08;target phase&#xff09;&…

客户端程序自动更新(升级)的方式

from&#xff1a;https://blog.csdn.net/woaitingting1985/article/details/72954652一、C/S自动更新原理C/S程序自动升级是一个很重要的功能&#xff0c;原理其实很简单&#xff0c;一般包含两个程序一个是主程序&#xff0c;也就是除了升级功能以外的程序&#xff0c;另一个就…

怎么用源程序把ChemDraw结构复制到Word文档

在学习化学过程中&#xff0c;不可避免的会接触到各种化学结构。这个时候就需要通过绘制化学结构来进行这方面的学习和传播。ChemDraw Professional 15就可以辅助完成这方面的工作。很多的用户朋友会通过选中后复制粘贴可以将ChemDraw结构复制到Word文档中&#xff0c;但这只是…

QT串口编程的相关类(QSerialPortInfo)

QT Serial Port相关的类只有两个QSerialPortInfo(#include<QSerialPortInfo>) 和QserialPort(#include<QSerialPort>) 先来介绍QSerialPortInfo 1&#xff1a;QSerialPortInfo(#include<QSerialPortInfo>) 该类是一个串口的辅助类类&#xff0c;提供主要是提…

用jquery写一个属于自己的音乐播放器

看到一个用css3实现的CD的动画&#xff0c;演示在这儿http://codepen.io/_kieran/pen/QNRmep 突然那我就想说给自己做一个音乐播放器吧&#xff0c;说做就做。演示在https://echolsx.github.io/music/ Github传送门&#xff1a;https://github.com/EchoLsx/music 主要代码&…

MySQL 性能监控 4 大指标

【编者按】本文作者为 John Matson&#xff0c;主要介绍 mysql 性能监控应该关注的 4 大指标。 文章系国内 ITOM 管理平台 OneAPM 编译呈现。 MySQL 是什么&#xff1f; MySQL 是现而今最流行的开源关系型数据库服务器。由 Oracle 所有&#xff0c;MySQL 提供了可以免费下载的社…

【深度相机系列四】深度相机原理揭秘--结构光(iPhone X 齐刘海原理)

from&#xff1a;https://blog.csdn.net/electech6/article/details/78707839导读 结构光法&#xff1a;为解决双目匹配问题而生 深度图效果&#xff1a;结构光vs.双目 投射图案的编码方式直接编码时分复用编码空分复用编码 Kinect1原理 iPhone X原深感相机是缩小版的更强大的K…

Android倒计时工具类

为什么80%的码农都做不了架构师&#xff1f;>>> 原文地址:http://my.oschina.net/reone/blog/710003 多谢touch_ping 的回应. 原来api有这个类 android.os.CountDownTimer , 具体实现很下面的差不多. import android.content.Context; import android.os.Handler…

深度相机原理揭秘--双目立体视觉

欢迎关注计算机视觉life&#xff01;导读 为什么非得用双目相机才能得到深度&#xff1f; 双目立体视觉深度相机的工作流程 双目立体视觉深度相机详细工作原理理想双目相机成像模型极线约束图像矫正技术基于滑动窗口的图像匹配基于能量优化的图像匹配 双目立体视觉深度相机的优…

微信扫码支付模式一和模式二的区别

http://www.baidu.com/link?urlAj_xhOM5Q6rpZXkTMBPq4o0UbCO4eLq0esX8B3K2v06bkRS8F8lC4k06rv-3uZARLLTEKJHMhwzI_cdcJiHfqK&wd&eqid904bc71f000181740000000356d7d9bf https://www.zhihu.com/question/35818812/answer/66086727 知乎页面访问存在502 Bad Gateway问题…