注冊(cè)注冊(cè)登錄登錄收藏驍銳收藏驍銳在線留言在線留言網(wǎng)站地圖網(wǎng)站地圖您好,歡迎來到驍銳科技官網(wǎng)!
自助下單

服務(wù)熱線:0755-29898410

驍銳的好口碑不止在產(chǎn)品

大家都在搜:驍銳傳感器定制松下傳感器代理傳感器新聞傳感器新聞百科

當(dāng)前位置首頁 » 驍銳科技新聞中心 » 資訊中心 » 技術(shù)專欄 » 機(jī)器視覺大師腳本編程

機(jī)器視覺大師腳本編程

返回列表 來源:驍銳科技 瀏覽:- 發(fā)布日期:2018-01-02 17:56:39【

機(jī)器視覺大師(MVS),一體式可編程機(jī)器視覺操控器(FVS), 可組態(tài)機(jī)器視覺操控器(EVS)都支撐腳本編程。盡管機(jī)器視覺大師腳本編程最簡(jiǎn)略,可是許多用戶遍及感覺好像很難入門,筆者將具體介紹一下這些機(jī)器視覺大師的腳本編程原理和進(jìn)程。

機(jī)器視覺大師在主動(dòng)檢測(cè)形式下,能夠支撐用戶腳本編程。為什么要這樣的功用呢?這需求簡(jiǎn)略介紹一下機(jī)器視覺大師供給主動(dòng)檢測(cè)功用的意圖說起。

機(jī)器視覺大師主動(dòng)檢測(cè)功用首要用于開發(fā)全主動(dòng)機(jī)器視覺主動(dòng)化體系的前期試驗(yàn)剖析(圖形預(yù)處理,特征算法等)或桌面式半主動(dòng)機(jī)器視覺運(yùn)用。機(jī)器視覺在主動(dòng)化范疇的運(yùn)用從軟件開發(fā)方面來講首要觸及圖畫預(yù)處理,特征剖析,形式辨認(rèn)算法等,完結(jié)工業(yè)范疇常用的如定位,色彩區(qū)別,缺點(diǎn)檢測(cè),生產(chǎn)日期檢測(cè)或辨認(rèn),條碼辨認(rèn)等。如果一個(gè)新的需求悉數(shù)從頭開端開發(fā)的話,工作量非常巨大,而且需求開發(fā)人員既具有圖畫處理方面的常識(shí),也需求具備比較強(qiáng)的編程才能,一般來說,是非常困難的。

機(jī)器視覺大師將圖畫剖析和常用的形式辨認(rèn)等算法徹底封裝成檢測(cè)算子,選用可視化修改的方法,用戶只需求動(dòng)動(dòng)鼠標(biāo)扒拉幾下, 不到幾分鐘,一個(gè)機(jī)器視覺運(yùn)用體系原型將很快樹立起來??墒牵?yàn)檫\(yùn)用的復(fù)雜化,機(jī)器視覺大師供給的算子可能不能徹底適用用戶的實(shí)踐需求。這就需求用戶進(jìn)行終究的處理即腳本編程,來完結(jié)終究的方針。打個(gè)比方來說,機(jī)器視覺大師就好比一個(gè)城市樹立的地鐵體系,盡管方便快捷,可是終究一公里還需求一種交通工具如同享單車,才能使乘客很舒暢地抵達(dá)意圖地。腳本編程好像是同享單車,盡管不是全主動(dòng)的,需求用點(diǎn)力,可是操作實(shí)在是很簡(jiǎn)略,只需把握好方向盤,用力蹬就行了。

機(jī)器視覺大師里邊設(shè)計(jì)一個(gè)簡(jiǎn)略的機(jī)器視覺或印象主動(dòng)檢測(cè)運(yùn)用,根本進(jìn)程如下:


言歸正傳,在機(jī)器視覺大師里邊進(jìn)行腳本編程其實(shí)也是很簡(jiǎn)略的一件事。不像一些高檔編程言語如c/c++,java, 網(wǎng)頁腳本php,這些言語功用較強(qiáng),支撐類,函數(shù),事情等,需求把握的常識(shí)點(diǎn)較多,學(xué)習(xí)起來比較復(fù)雜,綿長(zhǎng)。機(jī)器視覺大師的腳本編程只需求把握兩點(diǎn):1. 了解和把握方針和特點(diǎn)的概念; 2.  了解和運(yùn)用邏輯判別和循環(huán)或次序履行。徹底不需求自界說什么類,函數(shù)什么的。這些概念是全部編程言語里邊最根本的內(nèi)容。所以,別憂慮,全部會(huì)是那么的簡(jiǎn)略。

方針模型

在機(jī)器視覺大師里邊,編程的時(shí)分必定是以方針為主。 頂層方針只需兩種,即視場(chǎng)方針和整個(gè)運(yùn)用程序方針。 視場(chǎng)方針下面有算子方針,算子方針有讀數(shù)特點(diǎn)(復(fù)合型讀數(shù)如點(diǎn)(x,y)也能夠了解成方針)。不同的算子方針具有不同的讀數(shù),有數(shù)據(jù)類,有文本類,或數(shù)組類。機(jī)器視覺大師里邊的根本方針模型如下圖:


運(yùn)用程序方針依據(jù)當(dāng)時(shí)的檢測(cè)使命的不同,具有不同的特點(diǎn)(也稱變量)。視場(chǎng)方針即相機(jī)所能成像的規(guī)模,表現(xiàn)為一個(gè)圖畫,但實(shí)踐編程時(shí)可能與圖畫徹底不搭邊,所以只需記住,當(dāng)時(shí)PC體系有幾個(gè)相機(jī),就能夠了解有幾個(gè)視場(chǎng)方針。視場(chǎng)下面的算子的數(shù)量依據(jù)用戶自己實(shí)踐增加的數(shù)量決議。

在編程中,全部的方針均運(yùn)用稱號(hào)標(biāo)識(shí),這些標(biāo)識(shí)均體系現(xiàn)已主動(dòng)命名, 運(yùn)用程序方針的姓名為mvs, 有且只需一個(gè)。視場(chǎng)方針的姓名為sight, 后邊緊接一個(gè)數(shù)字,表明不同的視場(chǎng)方針等等,如sight1。視場(chǎng)里邊不同的算子分別有自己的姓名,同類型的算子后邊增加序號(hào)加以區(qū)別,與視場(chǎng)姓名的命名規(guī)矩差不多。

運(yùn)用的時(shí)分,方針必定是從最頂層方針開端,然后往下一層,再往下一層,直到特點(diǎn),不同的方針之間運(yùn)用圓點(diǎn)”.”符號(hào)進(jìn)行連接。例如,如果要取得視場(chǎng)一(sight1)里邊的雙態(tài)辨認(rèn)算子(dual1)的“檢測(cè)成果”讀數(shù), 如:

n = sight1.dual1.res

算子方針的讀數(shù)在運(yùn)轉(zhuǎn)一次檢測(cè)今后,體系會(huì)主動(dòng)給出成果,可是,運(yùn)用程序方針的特點(diǎn)許多情況下,需求用戶在腳本里邊進(jìn)行編程核算,如

mvs.good = 1,

這條句子將運(yùn)用程序方針的good特點(diǎn)設(shè)置為1.

不同檢測(cè)算子可用讀數(shù)如下表(因?yàn)榘鎰e不斷變化,請(qǐng)運(yùn)用實(shí)踐稱號(hào))

檢測(cè)算子

讀數(shù)稱號(hào)

數(shù)據(jù)類型

闡明

雙態(tài)檢測(cè)

res-成果

整數(shù)

模板索引。如果為0表明第一個(gè)模板,如果為1表明第2個(gè)模板。

定位

count – 實(shí)例個(gè)數(shù)

position –方位

abspos –肯定方位

offset – 偏移

整數(shù)

點(diǎn)

點(diǎn)

2D實(shí)數(shù)

如果找到實(shí)例,回來1,不然回來0

多態(tài)檢測(cè)

result – 成果(最大分?jǐn)?shù)的模板索引)

count –現(xiàn)已學(xué)習(xí)的模板數(shù)

pattname – 模板稱號(hào)或闡明

score – 當(dāng)時(shí)辨認(rèn)的每個(gè)模板分?jǐn)?shù)值

整數(shù)

整數(shù)

文本

實(shí)數(shù)

多態(tài)檢測(cè)的辨認(rèn)成果為分?jǐn)?shù)最高的模板索引。除非進(jìn)行了實(shí)踐的模板增或減操作,現(xiàn)已學(xué)習(xí)的模板數(shù)每次辨認(rèn)今后都不會(huì)改換。

模板辨認(rèn)

count – 實(shí)例個(gè)數(shù)

position –方位

angle – 視點(diǎn)

整數(shù)

點(diǎn)

實(shí)數(shù)

一維碼

count – 條碼個(gè)數(shù)

content –條碼內(nèi)容

整數(shù)

文本

二維碼

count – 條碼個(gè)數(shù)

content –條碼內(nèi)容

整數(shù)

文本

BLOB剖析

count – blob個(gè)數(shù)

offset – 偏移

width – 寬度

length – 長(zhǎng)度

centroid – 質(zhì)心

dens – 密度

pixsum – 像素和

pixavg – 像素平均

pixvar—像素方差

strength – 強(qiáng)度

perim – 周長(zhǎng)

area – 面積

circu --  圓度

slant – 斜率

rect – 外接矩形

整數(shù)

2D實(shí)數(shù)

整數(shù)

整數(shù)

點(diǎn)

實(shí)數(shù)

實(shí)數(shù)

實(shí)數(shù)

實(shí)數(shù)

實(shí)數(shù)

整數(shù)

整數(shù)

實(shí)數(shù)

實(shí)數(shù)

矩形

文字辨認(rèn)

content –字符內(nèi)容

文本

色彩辨認(rèn)

result – 成果

整數(shù)

回來色彩索引

邊距丈量

result – 成果

整數(shù)

回來實(shí)踐的長(zhǎng)度,以像素為單位

如果成果有多組相同特點(diǎn),那么該特點(diǎn)即為特點(diǎn)數(shù)組,需求運(yùn)用數(shù)組的方法進(jìn)行引證,如

  blob1.offset[1].x

數(shù)組序號(hào)從1開端。 記?。?但凡有多組相同特點(diǎn)的的算子,一般都會(huì)供給一個(gè)稱號(hào)相似“count”的讀數(shù)表明當(dāng)時(shí)有多少組特點(diǎn)。如:

  n = blob1.count

  m = pmat1.count

如果忘掉某個(gè)算子的讀數(shù),也能夠在對(duì)應(yīng)算子的參數(shù)設(shè)置窗口里邊的讀數(shù)頁中得到,如下圖:


邏輯判別和條件履行

機(jī)器視覺腳本編程機(jī)大部分上是對(duì)視場(chǎng)中算子的成果進(jìn)行邏輯運(yùn)轉(zhuǎn)今后,然后對(duì)運(yùn)用程序方針的相關(guān)特點(diǎn)進(jìn)行賦值的一個(gè)進(jìn)程。這樣的簡(jiǎn)略的方法,極大地增強(qiáng)軟件的功用,達(dá)到徹底滿意用戶需求的意圖。下面為腳本修改的一般進(jìn)程:

出于簡(jiǎn)略易用的考慮,機(jī)器視覺大師支撐最根本的邏輯判別表達(dá)式和條件履行句子。當(dāng)然,最根本的賦值句子和算術(shù)表達(dá)式是必須支撐的。句子不需求完畢符如c言語中的”;”,可是需求運(yùn)用空格隔開,出于可讀性考慮,主張一個(gè)句子運(yùn)用一行,最好選用縮進(jìn)結(jié)構(gòu)。

下表是邏輯運(yùn)算表達(dá)式:

邏輯運(yùn)算符或聯(lián)系運(yùn)算符,算術(shù)運(yùn)算符,括號(hào)等構(gòu)成邏輯表達(dá)式,其成果只能為true(真)或false(假)。

支撐的邏輯或聯(lián)系運(yùn)算符如下:

算符或關(guān)鍵詞

闡明

類型

and

與,左右兩頭的表達(dá)式為true,成果才為true,不然為false

邏輯運(yùn)算符

or

或,左右兩頭的恣意一個(gè)表達(dá)式為true,成果為true,不然為false

邏輯運(yùn)算符

not

非,如果右邊的表達(dá)式為true,成果為false。反之如果右邊的表達(dá)式為false,成果為true。

邏輯運(yùn)算符

<

小于,左面的表達(dá)式值如果小于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

>

大于,左面的表達(dá)式值如果大于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

<=

小于等于,左面的表達(dá)式值如果小于等于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

>=

大于等于,左面的表達(dá)式值如果大于等于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

==

等于,左面的表達(dá)式值如果等于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

~=

不等于,左面的表達(dá)式值如果不等于右邊的表達(dá)式值,成果為true,不然為false.

聯(lián)系運(yùn)算符

算術(shù)表達(dá)式的算符如下:


一個(gè)表達(dá)式可能由不同的類型的的表達(dá)式組成。這些表達(dá)式在核算的時(shí)分恪守必定的優(yōu)先次序。運(yùn)算符能夠經(jīng)過括號(hào)括起,括號(hào)里邊的運(yùn)算符號(hào)具有最高的優(yōu)先級(jí)。當(dāng)無括號(hào)的情況下,這些運(yùn)算符的從高到低的優(yōu)先次序如下:

^

not,-

*, /, %

+, -

<,  > , <=, >=, ==, ~=

and

or

在機(jī)器視覺大師腳本里邊能夠隨意界說變量,這些變量不需求聲明數(shù)據(jù)類型,直接將算術(shù)表達(dá)式或邏輯表達(dá)式賦值即可。變量的類型依據(jù)表達(dá)式的成果決議,能夠是邏輯類,數(shù)值類或文本類。

邏輯類的變量只能為true或 false, 文本類的內(nèi)容需求用雙引號(hào)括起。如

label = “hello, world”


       result = sight1.dual1.res == 0

       if  result == true then

          //do something

       end

機(jī)器視覺大師能夠運(yùn)轉(zhuǎn)不同品種的主動(dòng)檢測(cè)使命。許多情況下,需求進(jìn)行操控履行,對(duì)不同的特點(diǎn)進(jìn)行賦值,以取得終究成果。機(jī)器視覺大師供給根本的操控關(guān)鍵詞如if, while, for等

if then else

if句子先測(cè)試其條件,然后依據(jù)測(cè)試成果履行then部分或許else部分,else部分是可選的。如果要編寫嵌套的if,能夠運(yùn)用elseif。如:

示例一

if a < 0 then

   a = 0

end

示例二

if a < b then

   a =b

else

   a = a+1

end

示例三

if op == "+" then

    r = a + b

elseif op == "-" then

    r = a – b

end

while

while句子評(píng)價(jià)邏輯表達(dá)式的值,當(dāng)成果為true的時(shí)分,履行程序塊。如:

local a = 10
while a > 0 do
      a = a - 1
end

for

for句子將指定的變量進(jìn)行遞加核算,循環(huán)必定次數(shù)。如:

for i= 1, 100, 1 do

  # Do something
end

該段句子將重復(fù)履行程序段100次。在for句子里邊,第一個(gè)數(shù)字為初始值,第二個(gè)數(shù)字為終止值,第三個(gè)數(shù)字為步長(zhǎng),通常情況下為1,如果為1的話,第三個(gè)數(shù)字能夠省掉。

如果需求回來不再往下履行,能夠運(yùn)用return關(guān)鍵詞進(jìn)行回來。跳出一些循環(huán)塊,能夠運(yùn)用break關(guān)鍵詞。如:

for i= 1, 100, 1 do

         if i==50 then

              break

         end

end

n = 100

上面的句子段根本算法為當(dāng)i等于50的時(shí)分,跳出循環(huán),然后運(yùn)轉(zhuǎn)n=100句子。

機(jī)器視覺大師支撐不同的檢測(cè)使命類型,不同的檢測(cè)類型下,可用的運(yùn)用程序特點(diǎn)數(shù)量和意義是不一樣的。這些特點(diǎn)如合格數(shù),在檢測(cè)運(yùn)轉(zhuǎn)進(jìn)程中將在成果顯示面板中被顯示出來。下表為支撐的全部特點(diǎn)(全局變量):

稱號(hào)

闡明

適用的檢測(cè)類型

數(shù)據(jù)類型

rd1

讀數(shù)1

慣例檢測(cè)(默許)

實(shí)數(shù)

rd2

讀數(shù)2

慣例檢測(cè)(默許)

實(shí)數(shù)

rd3

讀數(shù)3

慣例檢測(cè)(默許)

實(shí)數(shù)

rd4

讀數(shù)4

慣例檢測(cè)(默許)

實(shí)數(shù)

rd5

讀數(shù)5

慣例檢測(cè)(默許)

實(shí)數(shù)

rd6

讀數(shù)6

慣例檢測(cè)(默許)

實(shí)數(shù)

rd7

讀數(shù)7

慣例檢測(cè)(默許)

實(shí)數(shù)

rd8

讀數(shù)8

慣例檢測(cè)(默許)

實(shí)數(shù)

good

合格品

質(zhì)量檢測(cè)

布爾類整數(shù),僅為1或0

ng

缺點(diǎn)品

質(zhì)量檢測(cè)

布爾類整數(shù),僅為1或0

count

當(dāng)時(shí)數(shù)

產(chǎn)品計(jì)數(shù)

整數(shù)(無小數(shù)部分)

diff

差數(shù)

產(chǎn)品計(jì)數(shù)

整數(shù)(無小數(shù)部分

want

方針數(shù)

產(chǎn)品計(jì)數(shù)

整數(shù)(無小數(shù)部分

ms1

丈量到的實(shí)踐值1

尺度丈量

實(shí)數(shù)

ws1

方針尺度的規(guī)范值1

尺度丈量

實(shí)數(shù)

dif1

差錯(cuò)1

尺度丈量

實(shí)數(shù)

ms2

丈量到的實(shí)踐值2

尺度丈量

實(shí)數(shù)

ws2

方針尺度的規(guī)范值2

尺度丈量

實(shí)數(shù)

dif2

差錯(cuò)2

尺度丈量

實(shí)數(shù)

ms3

丈量到的實(shí)踐值3

尺度丈量

實(shí)數(shù)

ws3

方針尺度的規(guī)范值3

尺度丈量

實(shí)數(shù)

dif3

差錯(cuò)3

尺度丈量

實(shí)數(shù)

ms4

丈量到的實(shí)踐值4

尺度丈量

實(shí)數(shù)

ws4

方針尺度的規(guī)范值4

尺度丈量

實(shí)數(shù)

dif4

差錯(cuò)4

尺度丈量

實(shí)數(shù)

終究,以一個(gè)實(shí)踐檢測(cè)的一個(gè)腳本完畢本文。如下:

cnt =  sight2.blob1.cnt

if  cnt  ~= 5 then

    mvs.good = 0

    mvs.ng =1

    return

end

for i=1,5 do

   if sight2.blob1.w[i] <25 then

           mvs.good = 0

           mvs.ng =1

           return

  end

    if sight2.blob1.h[i] <12 then

           mvs.good = 0

           mvs.ng =1

           return

  end

end

mvs.good =1

mvs.ng =0

這個(gè)腳本算法解說如下:如果sight2中的blob1的個(gè)數(shù)不是5個(gè),那么將good設(shè)置為0,ng特點(diǎn)設(shè)置為1后,直接回來。不然,逐一判別其高度或?qū)挾?,如果不合格則進(jìn)行相應(yīng)處理,然后回來。當(dāng)全部的blob寬度和高度徹底合格今后,將good設(shè)為1,ng設(shè)為0,然后回來。


推薦閱讀

    【本文標(biāo)簽】:機(jī)器視覺
    【責(zé)任編輯】:驍銳科技版權(quán)所有:http://hxyds.cn轉(zhuǎn)載請(qǐng)注明出處