日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【机器视觉】 HDevelop语言基础(三)-容器和保留字

發(fā)布時(shí)間:2024/4/24 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器视觉】 HDevelop语言基础(三)-容器和保留字 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 保留字
    • 02. 容器概述
    • 03. 構(gòu)造容器
    • 04. 容器元素操作
    • 05. 預(yù)留
    • 06. 附錄

01. 保留字

表 8.25 中列出的標(biāo)識(shí)符是保留字,它們的使用嚴(yán)格限于其預(yù)定義的含義。 它們不能用作變量名

02. 容器概述

Vector是一個(gè)容器,可以容納任意數(shù)量的元素,所有元素都必須具有完全相同的變量類型(即元組、圖標(biāo)對(duì)象或向量)。Vector類型的變量是HDevelop特有的。 它在 HDevelop 12.0 或更高版本中可用。 請(qǐng)注意,不能在舊版本的 HDevelop 程序中執(zhí)行使用Vector變量。

元組或?qū)ο蟮腣ector稱為一維,元組或?qū)ο蟮腣ector的Vector稱為二維,依此類推。 Vector的類型在程序中不能改變,即它的維度必須保持不變,元組的Vector不能被分配圖標(biāo)對(duì)象,反之亦然。

這是 EBNF(擴(kuò)展巴科斯-諾爾形式)語(yǔ)法中Vector的定義:

vector = "{" list "}" ; list = tuplelist | objectlist | vectorlist ; tuplelist = tuple, {",", tuple} ; objectlist = object, {",", object} ; vectorlist = vector, {",", vector} ; tuple = "[" control "]" ; control = string | integer | real | boolean ;

03. 構(gòu)造容器

Vector是通過(guò)在大括號(hào)中提供以逗號(hào)分隔的元素列表來(lái)定義的。

vectorT := {[1], [2], [3]} // one-dimensional vector This is equivalent to: vectorT := {1, 2, 3} // tuples of length 1 do not require square brackets*Of course, variable names or arbitrary expressions can be used instead of constants. t1 := 1 vectorT := {t1, t1 * 2, 3}

以下示例定義了一個(gè)標(biāo)圖標(biāo)對(duì)象的容器。

read_image (Image, 'clip') threshold (Image, Region, 0, 63) connection (Region, ConnectedRegions) vectorO := {Image, Region, ConnectedRegions}

以下示例定義了一個(gè)二維容器變量。

vectorV := {vectorT, {[4,5,6,7], [8,9]}}

也可以使用 .at() 和 .insert() 操作定義容器變量(見(jiàn)下文)。

容器元素的列表也可能是空的,即空Vector {} 是有效的,如下例所示:

vectorV2 := {{1,2}, {}}

但是請(qǐng)注意,空容器沒(méi)有特定類型。 因此,以下所有三個(gè)空賦值有效:

vectorO2 := vectorO vectorT2 := vectorT vectorV2 := vectorV vectorO2 := {} vectorT2 := {} vectorV2 := {}

將空容器分配給向量變量等效于 .clear() 操作(見(jiàn)下文)。 另一方面,這意味著將空容器分配給變量不足以定義變量的類型(參見(jiàn)第 276 頁(yè)的“變量類型”一節(jié))。 這樣的變量將具有未定義的類型(因此是無(wú)效的),除非它的類型在程序的其他地方正確定義。

04. 容器元素操作

使用 .at() 操作訪問(wèn)單個(gè)容器元素,其參數(shù)范圍從 0 到容器元素個(gè)數(shù)減去 1。可以組合多個(gè) .at() 操作來(lái)訪問(wèn)多維容器的子元素。 訪問(wèn)不存在的容器元素是一個(gè)運(yùn)行時(shí)錯(cuò)誤。

tuple := vectorT.at(0) // tuple := 1 region := vectorO.at(1) // region := Region vector := vectorV.at(0) // vector := {[1,2,3]} tuple := vectorV.at(1).at(1) // tuple := [8, 9]

.at() 操作也用于設(shè)置容器元素。 允許寫(xiě)入不存在的容器元素。 如有必要,容器會(huì)自動(dòng)填充空元素。

vectorT.at(2) := 33 // vectorT := {[1], [2], [33]} vectorE.at(4) := 'text' // vectorE := {[], [], [], [], 'text'}

at() 操作還允許在循環(huán)中動(dòng)態(tài)構(gòu)造容器:

for i:= 0 to 5 by 1 vecT.at(i) := gen_tuple_const(i,5) endfor

.insert() 操作在指定一個(gè)索引位置插入一個(gè)值。 它將值從給定索引移到末尾一個(gè)位置,并將索引處的值設(shè)置為新值。

.remove() 操作執(zhí)行相反的操作。 它刪除指定位置的值并將所有后續(xù)值向左移動(dòng)。

vectorT.insert(1, 99) // vectorT := {[1], [99], [2], [33]} vectorT.remove(2) // vectorT := {[1], [99], [33]}

與 .at() 操作一樣,如果需要,向量會(huì)自動(dòng)填充空元素。

vectorNew.insert(2, 3) // vectorNew := {[], [], [3]}

.concat() 連接兩個(gè)相同類型和維度的容器。

vectorC := vectorT.concat(vectorNew) // vectorC := {[1], [99], [33], [], [], [3]}

獲取容器元素的數(shù)量

使用 length() 操作查詢?nèi)萜髟氐臄?shù)量。

i := vectorT.length() // i := 3 j := vectorV.length() // j := 2 k := vectorV.at(0).length() // k := 3

清除容器中元素

.clear() 操作從相應(yīng)的容器中刪除所有元素。 但是請(qǐng)注意,清除的容器仍然保持其變量類型。

vectorT.clear() * vectorT := vectorO // illegal: vectorT is a tuple vector * vectorT := vectorV // illegal: vectorT is one-dimensional

修改容器中的元素

.clear()、.insert() 和 .remove() 操作的特殊之處在于它們修改輸入容器。
因此,它們只能在獨(dú)立的程序語(yǔ)句(所謂的可執(zhí)行表達(dá)式)中使用,而不能在賦值或輸入?yún)?shù)的表達(dá)式中使用。 但是,允許在一個(gè)可執(zhí)行表達(dá)式中連接多個(gè)修改容器操作,例如:

v := {1, 2, 3} v.insert(1, 5).insert(2, 4).remove(0) // sets v to {5, 4, 2, 3}

使用executable_expression特殊算子在運(yùn)算符窗口輸入中修改容器。

測(cè)試容器變量的(不)相等性

== 和 != 操作符分別用于測(cè)試兩個(gè)容器變量是否相等或不等。

將向量轉(zhuǎn)換為元組,反之亦然

可以使用算子 convert_vector_to_tuple 將容器中的變量轉(zhuǎn)化為元組。

convert_vector_to_tuple (vectorV, T) // T := [1, 2, 3, 4, 5, 6, 7, 8, 9]

可以使用算子 convert_tuple_to_vector_1將元組中的元素轉(zhuǎn)化為容器

convert_tuple_to_vector_1d (T, 1, V) // V := {[1],[2],[3],[4],[5],[6],[7],[8],[9]}

05. 預(yù)留

06. 附錄

6.1 機(jī)器視覺(jué)博客匯總
網(wǎng)址:https://dengjin.blog.csdn.net/article/details/116837497

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【机器视觉】 HDevelop语言基础(三)-容器和保留字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。