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.pswp.cn/news/458306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458306.shtml
英文地址,請注明出處:http://en.pswp.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函…