




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章HALCON編程基礎(chǔ)HALCON軟件的編程環(huán)境Hdevelop是交互式的,它的操作窗口和編程界面簡(jiǎn)潔、易操作。本章主要介紹Hdevelop的使用,并介紹HALCON的控制語(yǔ)句,以及編程環(huán)境下圖像的讀取、顯示和轉(zhuǎn)換。
HALCON數(shù)字圖像處理2.1
HDevelop應(yīng)用界面介紹
2.2
HALCON控制語(yǔ)句2.3
HALCON算子2.4
HALCON圖像讀取、顯示和轉(zhuǎn)換Blob分析第2章HALCON編程基礎(chǔ)HALCON數(shù)字圖像處理2.1HDevelop應(yīng)用界面介紹HDevelop圖形組件是開(kāi)始視覺(jué)處理算法的一個(gè)很好的工具,其類似于VC、VB、Delphi等編譯環(huán)境,它有自己的交互式界面,可以編譯和測(cè)試視覺(jué)處理算法,可以方便查看處理結(jié)果,也可以導(dǎo)出算法代碼。HALCON數(shù)字圖像處理1.HDevelop預(yù)覽HALCON安裝完成后,點(diǎn)擊圖標(biāo)運(yùn)行HALCON軟件。1.主界面整個(gè)界面分為標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄和四個(gè)活動(dòng)界面窗口,四個(gè)活動(dòng)界面窗口分別是圖像變量窗口、算子窗口、變量窗口和程序窗口,如圖2-1所示。如果窗口排列不整齊,可以選擇菜單欄>窗口>排列窗口,重新排列窗口。圖2-1HALCON主界面HALCON數(shù)字圖像處理1.HDevelop預(yù)覽2.菜單欄菜單欄包含所有HDevelop的功能命令,單擊打開(kāi)后有下拉菜單,如圖2-2所示。圖2-2菜單欄4.狀態(tài)欄狀態(tài)欄顯示程序的執(zhí)行情況,如圖2-4所示。。圖2-3工具欄3.工具欄工具欄包含了一系列常用功能的快捷方式,如圖2-3所示。圖2-4狀態(tài)欄HALCON數(shù)字圖像處理1.HDevelop預(yù)覽5.打開(kāi)一個(gè)例程HALCON提供了大量基于應(yīng)用的示例程序,下面打開(kāi)一個(gè)HALCON自帶例程,簡(jiǎn)單了解一下HALCON程序的結(jié)構(gòu)。從菜單欄>文件>瀏覽程序>打開(kāi)一個(gè)例程,比如打開(kāi)ball.hdev,如圖2-5、2-6所示。點(diǎn)擊工具欄“運(yùn)行”工具圖標(biāo),運(yùn)行程序,結(jié)果如圖2-7所示。圖2-5瀏覽例程HALCON數(shù)字圖像處理1.HDevelop預(yù)覽圖2-7例程運(yùn)行結(jié)果圖2-6打開(kāi)例程HALCON數(shù)字圖像處理2.HDevelop窗口介紹1.HDevelop算子窗口算子窗口顯示的是算子的重要數(shù)據(jù),包含了所有的參數(shù),各個(gè)變量的型態(tài),以及參數(shù)數(shù)值,如圖2-8所示。這里會(huì)顯示參數(shù)的默認(rèn)值,以及可以選用的數(shù)值。每一個(gè)算子都有聯(lián)機(jī)幫助。另一個(gè)常用的是算子名稱的查詢顯示功能,在一個(gè)combobox里,只要鍵入部分字符串甚至開(kāi)頭的字母,即可顯示所有符合名稱的算子供選用,如圖2-9所示。圖2-8算子窗口HALCON數(shù)字圖像處理2.HDevelop窗口介紹2.HDevelop程序窗口程序窗口是用來(lái)顯示一個(gè)HDevelop程序。它可以顯示整個(gè)程序或是某個(gè)運(yùn)算符。窗口左側(cè)是一些控制程序執(zhí)行的指示符號(hào)。HDevelop剛啟動(dòng)時(shí),可以看到一個(gè)綠色箭頭的程序計(jì)數(shù)器(programcounter,簡(jiǎn)稱PC),一個(gè)插入符號(hào),還可以設(shè)一個(gè)斷點(diǎn)(breakingpoint),窗口右側(cè)顯示程序代碼,如圖2-10所示。圖2-9算子查詢HALCON數(shù)字圖像處理2.HDevelop窗口介紹在程序編輯窗口點(diǎn)擊右鍵,在下拉菜單顯示程序運(yùn)行調(diào)試中的一些設(shè)置,如圖2-11所示。圖2-10程序窗口圖2-11程序調(diào)試設(shè)置HALCON數(shù)字圖像處理2.HDevelop窗口介紹HDevelop啟動(dòng)以后,就可以開(kāi)始從程序窗口輸入,逐步建立一個(gè)HDevelop程序。要在程序中新增一行,比如加一個(gè)算子,有以下兩個(gè)步驟。(1)首先要將光標(biāo)放在新增的地方,用鍵盤(pán)的Shift鍵加上的鼠標(biāo)左鍵,點(diǎn)在要加入的地方,然后從算子菜單中選擇,或是由算子窗口來(lái)選用想要加入的數(shù)據(jù)。(2)新的算子會(huì)出現(xiàn)在算子窗口中,包含它的參數(shù)等數(shù)據(jù),此時(shí)按下“輸入”,就會(huì)將它加入程序代碼中,成為新增的一行;如果按下“確定”,除了程序代碼會(huì)新增以外,同時(shí)也會(huì)執(zhí)行程序。如果按的是“應(yīng)用”,算子不會(huì)新增到程序中,但是會(huì)被執(zhí)行,這樣就可以方便又有效的測(cè)試修改參數(shù)的結(jié)果。如果只要執(zhí)行某一行,可以將程序計(jì)數(shù)器(PC)置于要執(zhí)行的那行前,再用鼠標(biāo)左鍵在該行前單擊,然后按HDevelop工具欄的“單步跳過(guò)函數(shù)”,如果單擊“運(yùn)行”,則程序代碼都會(huì)執(zhí)行,直到一個(gè)斷點(diǎn)或是按“停止”將其中止。HALCON數(shù)字圖像處理2.HDevelop窗口介紹3.HDevelop變量窗口變量窗口顯示了程序在執(zhí)行時(shí)產(chǎn)生的各種變量,包括圖像變量和控制變量,如圖2-12所示。在變量上用鼠標(biāo)雙擊,即可顯示變量值,如圖2-13所示。如果變量值是圖像變量,鼠標(biāo)雙擊,會(huì)顯示在圖形窗口里。圖2-12變量窗口圖2-13變量值HALCON數(shù)字圖像處理2.HDevelop窗口介紹
4.HDevelop圖形窗口圖形窗口用來(lái)顯示圖像化變量數(shù)據(jù),如圖2-14所示。圖2-14圖形窗口圖2-15可視化菜單(1)圖形窗口可視化圖形窗口可視化的方式可以依據(jù)需要來(lái)調(diào)整,相關(guān)功能位于“可視化”菜單下,如圖2-15所示??梢蚤_(kāi)啟數(shù)個(gè)圖形窗口,并且自行選用要用的窗口。HALCON數(shù)字圖像處理2.HDevelop窗口介紹圖2-16圖形窗口的3D模式(2)圖形窗口的3D模式點(diǎn)擊圖2-14圖形窗口右上角“3D點(diǎn)圖模式”,可以將圖形窗口變?yōu)?D模式,如圖2-16所示。HALCON數(shù)字圖像處理2.HDevelop窗口介紹
圖2-17灰度直方圖(3)HDevelop灰度直方圖從菜單欄>可視化菜單>灰度直方圖,打開(kāi)灰度直方圖功能窗口,進(jìn)行設(shè)置,如圖2-17所示。HALCON數(shù)字圖像處理2.HDevelop窗口介紹
圖2-18特征直方圖(4)HDevelop特征直方圖從菜單欄>可視化菜單>特征直方圖,打開(kāi)特征直方圖功能窗口,進(jìn)行設(shè)置和編輯,并可根據(jù)編輯的直觀結(jié)果,插入程序代碼。如圖2-18所示。HALCON數(shù)字圖像處理3.HDevelop菜單介紹
圖2-19編輯菜單1.編輯菜單編輯菜單用于HDevelop編程時(shí)的編輯使用,如圖2-19所示。HALCON數(shù)字圖像處理3.HDevelop菜單介紹
圖2-20執(zhí)行菜單2.執(zhí)行菜單執(zhí)行菜單用于程序調(diào)試時(shí)的設(shè)置及運(yùn)行,如圖2-20所示。HALCON數(shù)字圖像處理3.HDevelop菜單介紹
圖2-21過(guò)程菜單3.過(guò)程菜單過(guò)程菜單用于HDevelop中創(chuàng)建一個(gè)過(guò)程或者開(kāi)發(fā)新的算子,如圖2-21所示。HALCON數(shù)字圖像處理3.HDevelop菜單介紹
圖2-22助手菜單4.助手菜單打開(kāi)菜單欄>助手,助手菜單是特有的快速原型化工具,具有直觀可視的特點(diǎn),可以進(jìn)行數(shù)據(jù)分析和特征檢測(cè),包括圖像獲取助手、匹配助手、攝像機(jī)標(biāo)定助手和測(cè)量助手。如圖2-22所示。HALCON數(shù)字圖像處理2.2HALCON控制語(yǔ)句
HALCON提供的控制流與C/C++的用法類似。一般成對(duì)存在,一個(gè)是開(kāi)始的標(biāo)志,一個(gè)是結(jié)束的標(biāo)志。也就是說(shuō)有if就有endif,有while就有endwhile??刂普Z(yǔ)句類型主要由以下幾種組成:(1)if條件語(yǔ)句;(2)switch多分支條件語(yǔ)句;(3)while循環(huán)語(yǔ)句;(4)for循環(huán)語(yǔ)句;(5)中斷語(yǔ)句。HALCON數(shù)字圖像處理1.條件語(yǔ)句1.if條件語(yǔ)句If條件語(yǔ)句有三種常用的表達(dá)形式,下面一一列出。(1)if(表達(dá)式)語(yǔ)句組1endif語(yǔ)義為:判斷表達(dá)式的值,如果表達(dá)式的值非零則執(zhí)行語(yǔ)句組1,否則直接轉(zhuǎn)到endif?!纠?-1】if條件語(yǔ)句實(shí)例1*賦值cont:=2*判斷變量cont的值是否大于等于1,大于等于1就執(zhí)行語(yǔ)句cont:=cont-1if(cont>=1)cont:=cont-1HALCON數(shù)字圖像處理1.條件語(yǔ)句*if條件語(yǔ)句結(jié)束標(biāo)志endif(2)if(表達(dá)式)語(yǔ)句組1else語(yǔ)句組2endif語(yǔ)義為:判斷表達(dá)式的值,如果表達(dá)式的值非零則執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2?!纠?-2】if條件語(yǔ)句實(shí)例2cont:=2*判斷變量cont的值是否大于等于1,大于等于1就執(zhí)行語(yǔ)句cont:=cont-1HALCON數(shù)字圖像處理1.條件語(yǔ)句if(cont>=1)cont:=cont-1*cont的值小于1就執(zhí)行語(yǔ)句cont:=cont+1elsecont:=cont+1*if條件語(yǔ)句結(jié)束標(biāo)志endif(3)if(表達(dá)式1)語(yǔ)句組1elseif(表達(dá)式2)語(yǔ)句組2else語(yǔ)句組3endifHALCON數(shù)字圖像處理1.條件語(yǔ)句語(yǔ)義為:判斷表達(dá)式的值,表達(dá)式1的值非零則執(zhí)行語(yǔ)句組1。表達(dá)式1的值為零而表達(dá)式2的值非零則執(zhí)行語(yǔ)句組2,兩個(gè)表達(dá)式的值都為零則執(zhí)行語(yǔ)句組3?!纠?-3】if條件語(yǔ)句實(shí)例3cont:=2*判斷變量cont是否大于等于1,大于等于1就執(zhí)行語(yǔ)句cont:=cont-1if(cont>=1)cont:=cont-1*判斷變量cont是否小于等于-1,小于等于-1就執(zhí)行語(yǔ)句cont:=cont+1elseif(cont<=-1)cont:=cont+1*如果cont大于-1小于1執(zhí)行語(yǔ)句cont:=cont+2HALCON數(shù)字圖像處理1.條件語(yǔ)句elsecont:=cont+2*if條件語(yǔ)句結(jié)束標(biāo)志endif2.switch多分支條件語(yǔ)句當(dāng)if...else條件語(yǔ)句使用多層嵌套可以用switch多分支條件語(yǔ)句代替。格式:switch(條件)case常量表達(dá)式1:語(yǔ)句1break...
HALCON數(shù)字圖像處理1.條件語(yǔ)句case常量表達(dá)式n:語(yǔ)句nbreakdefault:語(yǔ)句n+1endswitch語(yǔ)義為:將條件值與其后的常量表達(dá)式的值逐個(gè)比較,當(dāng)條件的值與其后的某個(gè)常量表達(dá)式的值相等時(shí)就執(zhí)行常量表達(dá)式后面的所有語(yǔ)句。每個(gè)case語(yǔ)句只是一個(gè)入口標(biāo)號(hào),所以不能確定執(zhí)行的終止點(diǎn),如果只想執(zhí)行一條case語(yǔ)句,則應(yīng)該在case語(yǔ)句的最后使用break語(yǔ)句結(jié)束switch條件語(yǔ)句。如果條件值與所有的常量表達(dá)式的值均不相等則執(zhí)行default后面的語(yǔ)句。switch語(yǔ)句中所有常量表達(dá)式的值應(yīng)該是不重復(fù)的常量。因?yàn)閟witch語(yǔ)句無(wú)法處理浮點(diǎn)數(shù)所以條件值必須是整數(shù)。如果條件選項(xiàng)涉及取值范圍、浮點(diǎn)數(shù)或兩個(gè)變量的比較則應(yīng)該使用if...else條件語(yǔ)句。
HALCON數(shù)字圖像處理1.條件語(yǔ)句【例2-4】switch條件語(yǔ)句實(shí)例I:=5*I的值與其后的常量表達(dá)式的值逐個(gè)比較switch(I)case1:I:=I-3*中斷語(yǔ)句,跳出switch語(yǔ)句break*I的值與常量表達(dá)式的值相等,執(zhí)行后面的語(yǔ)句case5:I:=I+5break*I的值與其后所有常量表達(dá)式的值都不相等則執(zhí)行default語(yǔ)句default:I:=2*IHALCON數(shù)字圖像處理1.條件語(yǔ)句*switch語(yǔ)句結(jié)束標(biāo)志endswitchHALCON數(shù)字圖像處理2.循環(huán)控制語(yǔ)句1.while循環(huán)語(yǔ)句格式:while(條件)循環(huán)體語(yǔ)句endwhile語(yǔ)義為:首先對(duì)條件值進(jìn)行判斷,若條件值非零則重復(fù)執(zhí)行循環(huán)語(yǔ)句,直到條件值為零時(shí)退出while循環(huán)。若條件值始終不為零,則while循環(huán)容易成為死循環(huán),這時(shí)候需要使用break語(yǔ)句跳出循環(huán)。【例2-5】while循環(huán)語(yǔ)句實(shí)例In:=1In_Sum:=0*判斷In是否小于等于100,小于等于100則執(zhí)行循環(huán)體while(In<=100)HALCON數(shù)字圖像處理2.循環(huán)控制語(yǔ)句*求和In_Sum:=In_Sum+In*自加10In:=In+10*while語(yǔ)句結(jié)束標(biāo)志endwhile2.for循環(huán)語(yǔ)句格式:for(Index:=starttoendbystep)循環(huán)體endforFor循環(huán)語(yǔ)句是HALCON最重要的循環(huán)結(jié)構(gòu),通過(guò)控制變量的開(kāi)始值至結(jié)束值來(lái)進(jìn)行循環(huán),start為Index變量的開(kāi)始值,end為結(jié)束值,step為步長(zhǎng)值。首先判斷Index變量的開(kāi)始值是否小于結(jié)束值,如果小于則執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。執(zhí)行完循環(huán)體以后把Index的值加步長(zhǎng)值HALCON數(shù)字圖像處理2.循環(huán)控制語(yǔ)句作為Index的新值,判斷Index的新值是否小于結(jié)束值。如果小于則繼續(xù)執(zhí)行循環(huán)體,否則循環(huán)結(jié)束,依次執(zhí)行直到Index的新值大于結(jié)束值則循環(huán)結(jié)束。【例2-6】for循環(huán)語(yǔ)句實(shí)例I:=0*循環(huán)變量I從1到10,每次增加1forJ:=1to10by1*每次循環(huán)判斷J是否小于5,小于5則跳過(guò)這次循環(huán)if(J<5)continue*if語(yǔ)句結(jié)束標(biāo)志endif*求和I:=I+JHALCON數(shù)字圖像處理2.循環(huán)控制語(yǔ)句*for循環(huán)語(yǔ)句結(jié)束標(biāo)志endforHALCON數(shù)字圖像處理3.中斷語(yǔ)句
一般來(lái)說(shuō)break與continue語(yǔ)句都能夠使程序跳過(guò)部分代碼。在switch或任意循環(huán)中使用break語(yǔ)句可以使程序跳出switch或任意循環(huán)直接執(zhí)行后面的語(yǔ)句。continue語(yǔ)句用于循環(huán)語(yǔ)句,能夠使程序跳過(guò)循環(huán)體中余下的代碼進(jìn)行新一輪循環(huán)?!纠?-7】中斷語(yǔ)句實(shí)例I:=0forJ:=1to10by1*如果J大于5則跳出循環(huán)if(J>5)breakendif*如果J=3跳過(guò)此次循環(huán)HALCON數(shù)字圖像處理3.中斷語(yǔ)句if(J==3)continue*if語(yǔ)句結(jié)束標(biāo)志endif*求和I:=I+J*for語(yǔ)句結(jié)束標(biāo)志endforHALCON數(shù)字圖像處理2.3HALCON算子1.HALCON算子及算子編輯窗口HALCON算子的基本結(jié)構(gòu)為:算子(圖像輸入:圖像輸出:控制輸入:控制輸出:)HALCON算子中的四種參數(shù)被三個(gè)冒號(hào)依次隔開(kāi),分別是:圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù)。一個(gè)算子中可能這四種參數(shù)不會(huì)都存在,但是參數(shù)的次序不會(huì)變化。HALCON中的輸入?yún)?shù)不會(huì)被算子更改,只被算子使用,算子只能更改輸出參數(shù)。算子舉例:threshold(Image:Region:MinGray,MaxGray:)Threshold算子里面Image為圖像輸入?yún)?shù);Region為圖像輸出參數(shù);MinGray和MaxGray為控制輸入?yún)?shù)。由此看出調(diào)用這個(gè)算子必須輸入一個(gè)圖像參數(shù)和兩個(gè)控制參數(shù)才能輸出一個(gè)圖像參數(shù)。下面介紹一下HALCON算子的編輯窗口,編輯窗口如圖2-23和圖2-24所示。HALCON數(shù)字圖像處理1.HALCON算子及算子編輯窗口圖2-23算子編輯窗口1HALCON數(shù)字圖像處理1.HALCON算子及算子編輯窗口圖2-24算子編輯窗口2HALCON數(shù)字圖像處理1.HALCON算子及算子編輯窗口
通過(guò)算子編輯窗口我們看到每條算子都有特定的顏色,我們可以通過(guò)打開(kāi)參數(shù)用戶窗口看到編輯窗口中各算子對(duì)應(yīng)的顏色如圖2-25所示。通過(guò)菜單欄>編輯>參數(shù)選擇>程序窗口>打開(kāi)程序窗口。一般情況下,語(yǔ)句的顏色分類:1)褐色:控制和開(kāi)發(fā)算子;2)藍(lán)色:圖像獲取和處理算子;3)淺藍(lán)色:外部函數(shù);4)綠色:注釋。HALCON數(shù)字圖像處理1.HALCON算子及算子編輯窗口
在參數(shù)用戶窗口可以通過(guò)對(duì)話框修改編輯窗口算子顯示的顏色、字體、HDevelop系統(tǒng)語(yǔ)言、布局。布局主要是指四個(gè)活動(dòng)界面窗口排列的位置,布局說(shuō)明如圖2-26所示。圖2-25程序窗口參數(shù)HALCON數(shù)字圖像處理1.HALCON算子及算子編輯窗口圖2-26布局說(shuō)明HALCON數(shù)字圖像處理2.算子查詢2算子查詢算子的幫助窗口包含了所有HALCON算子的詳細(xì)說(shuō)明,可以通過(guò)按F1快捷鍵打開(kāi)HALCON算子的幫助窗口,也可以通過(guò)下面的步驟打開(kāi)幫助窗口:菜單欄>幫助>幫助。算子名稱具有查詢顯示作用,通過(guò)算子查找對(duì)話框鍵入全部或部分算子名稱,在彈出的列表里點(diǎn)擊想查找的算子,幫助窗口右側(cè)會(huì)顯示算子的具體說(shuō)明,如圖2-27所示。具體說(shuō)明包括:算子名稱:算子的英文名稱以及大致功能;算子簽名:帶有算子參數(shù)、分隔符的算子簽名;算子描述:描述算子功能和各參數(shù)意義;算子參數(shù):講解各參數(shù)類型和屬性;HDevelop例程:用到此算子的例程,點(diǎn)擊可查看例程。HALCON數(shù)字圖像處理2.算子查詢圖2-27幫助窗口HALCON數(shù)字圖像處理3.算子編輯3.算子編輯算子編輯過(guò)程常使用算子窗口來(lái)建立HDevelop程序,算子窗口包含了各算子的參數(shù)及參數(shù)取值。使用算子窗口能夠直接對(duì)算子參數(shù)的取值進(jìn)行合理選擇。下面以新建threshold程序?yàn)槔f(shuō)明如何使用算子窗口建立某一行HDevelop程序。使用算子窗口建立某一行HDevelop程序的步驟為:?jiǎn)螕羰髽?biāo)使光標(biāo)定位到要?jiǎng)?chuàng)建程序的位置,通過(guò)菜單欄>算子窗口>輸入算子和函數(shù)對(duì)話框中鍵入全部或部分算子名稱,找到需要編輯的算子>回車確認(rèn)>打開(kāi)算子窗口>選擇合適的算子參數(shù)>點(diǎn)擊確定。輸入算子和函數(shù)對(duì)話框如圖2-28所示。HALCON數(shù)字圖像處理3.算子編輯圖2-28輸入算子和函數(shù)對(duì)話框
一般來(lái)說(shuō)打開(kāi)算子窗口以后需要對(duì)算子的四個(gè)參數(shù)(圖像輸入?yún)?shù),圖像輸出參數(shù),控制輸入?yún)?shù),控制輸出參數(shù))進(jìn)行選擇。此處threshold算子只需要對(duì)前3個(gè)參數(shù)進(jìn)行選擇,各參數(shù)的描述如圖2-29所示。HALCON數(shù)字圖像處理3.算子編輯圖2-29算子窗口參數(shù)描述
使用下拉列表直接選擇threshold算子的圖像輸入?yún)?shù)與圖像輸出參數(shù)名稱,通過(guò)下拉列表對(duì)輸入?yún)?shù)的數(shù)值進(jìn)行選擇,如圖2-30所示。HALCON數(shù)字圖像處理3.算子編輯圖2-30控制輸入?yún)?shù)數(shù)值選擇
算子編輯有關(guān)的快捷鍵:F3為激活所選程序行,F(xiàn)4為注銷所選程序行。HALCON數(shù)字圖像處理4.算子更改4.算子更改
HDevelop程序編寫(xiě)過(guò)程中可以利用算子窗口對(duì)某一行的算子進(jìn)行更改。
算子更改步驟為:雙擊算子名稱選中需要更改的算子>右鍵>打開(kāi)算子窗口,在彈出的算子窗口中修改參數(shù),算子更改如圖2-31所示。圖2-31算子更改HALCON數(shù)字圖像處理5.算子運(yùn)行5.算子運(yùn)行
執(zhí)行程序時(shí)如果只要執(zhí)行某一行需要選中執(zhí)行行的前一行,右鍵選擇程序計(jì)數(shù)器,將執(zhí)行標(biāo)示定位到要執(zhí)行的前一行,通過(guò)菜單欄>執(zhí)行>單步跳過(guò)程序>執(zhí)行某一行。多行的執(zhí)行可以通過(guò)菜單欄>執(zhí)行>運(yùn)行>執(zhí)行接下來(lái)的所有程序代碼,直到遇到斷點(diǎn)或是遇到Stop算子才會(huì)中止程序。
算子運(yùn)行有關(guān)的快捷鍵:F2為重置程序執(zhí)行,F(xiàn)5為程序運(yùn)行,F(xiàn)6為單步跳過(guò)函數(shù),F(xiàn)7為單步跳入函數(shù),F(xiàn)8為單步跳出函數(shù)。HALCON數(shù)字圖像處理2.4HALCON圖像讀取、顯示和轉(zhuǎn)換1.HALCON圖像讀取下面介紹圖像讀取的三種方式。1.利用read_image算子讀取圖像
算子read_image(:Image:FileName:)中Image為讀取的圖像變量名稱,F(xiàn)ileName為圖像文件所在的路徑,HALCON支持多種圖像格式。利用read_image算子讀取圖像有下面三種方式:(1)利用快捷鍵調(diào)用read_image算子讀取圖像,讀取圖像的步驟為:按CTRL+R快捷鍵打開(kāi)讀取圖像對(duì)話框>選擇文件名稱所在的路徑及變量名稱>選擇語(yǔ)句插入位置>點(diǎn)擊確定,快捷鍵讀取圖像如圖2-32所示。HALCON數(shù)字圖像處理1.HALCON圖像讀取圖2-32快捷鍵讀取圖像HALCON數(shù)字圖像處理1.HALCON圖像讀取圖2-33算子窗口讀取圖像(2)使用算子窗口調(diào)用read_image算子,選擇文件名稱所在的路徑及變量名稱,算子窗口讀取圖像如圖2-33所示。HALCON數(shù)字圖像處理1.HALCON圖像讀?。?)利用for循環(huán)讀取同一路徑下的多張圖。首先聲明一個(gè)Tuple數(shù)組保存文件名及路徑,然后利用for循環(huán)依次讀取Tuple數(shù)組保存路徑下的圖像?!纠?-8】for循環(huán)讀取圖像實(shí)例*聲明數(shù)組ImagePath:=[]*將文件名及路徑保存到數(shù)組ImagePath[0]:='fin1.png'ImagePath[1]:='fin1.png'ImagePath[2]:='fin1.png'*循環(huán)讀取圖像fori:=0to2by1read_image(Image,ImagePath[i])*for循環(huán)結(jié)束標(biāo)志endforHALCON數(shù)字圖像處理1.HALCON圖像讀取2.利用采集助手批量讀取文件夾下所有圖像利用采集助手批量讀取文件夾下所有圖像的步驟為:菜單欄>助手>打開(kāi)新的ImageAcquisition>資源>圖像文件>選擇路徑>代碼生成>插入代碼,選擇文件夾路徑如圖2-34,生成批量讀取圖像的代碼如圖2-35所示。圖2-34選擇文件夾路徑HALCON數(shù)字圖像處理1.HALCON圖像讀取圖2-35生成批量讀取圖像的代碼HALCON數(shù)字圖像處理1.HALCON圖像讀取【例2-9】利用采集助手讀取圖像實(shí)例*遍歷文件夾list_files('C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/bicycle',['files','follow_links'],ImageFiles)*篩選指定格式的圖像tuple_regexp_select(ImageFiles,['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png)$','ignore\_case'],ImageFiles)*依次讀取圖像forIndex:=0to|ImageFiles|-1by1read_image(Image,ImageFiles[Index])*顯示圖像dev_display(Image)endforHALCON數(shù)字圖像處理1.HALCON圖像讀取算子講解:(1)list_image_files(::ImageDirectory,Extensions,Options:ImageFiles)作用:遍歷文件夾;ImageDirectory:文件夾路徑;Extensions:文件擴(kuò)展名,如tif|tiff|gif|bmp|jpg|jpeg|jp2|png等;Options:搜索選項(xiàng),如表3-1所示。files指定搜索的格式為文件directories指定搜索格式為文件夾recursive指定可以遍歷文件夾下的文件max_depth5指定遍歷的深度max_files1000指定遍歷的最大文件數(shù)目表2-1搜索選項(xiàng)ImageFiles:文件名數(shù)組。HALCON數(shù)字圖像處理1.HALCON圖像讀取(2)tuple_regexp_select(::Data,Expression:Selection)作用:篩選指定格式的圖像;Data:輸入的文件名數(shù)組;Expression:文件篩選規(guī)則表達(dá)式;Selection:篩選出的文件名數(shù)組。HALCON數(shù)字圖像處理2.HALCON圖像顯示1.圖形窗口默認(rèn)的圖形窗口尺寸為512*512,因此當(dāng)圖像尺寸不同時(shí)顯示在圖像窗口上會(huì)變形,要看到無(wú)變形的圖像的步驟為:菜單欄>可視化>圖像尺寸>適應(yīng)窗口,即可自動(dòng)調(diào)整窗口。通常使用HDevelop算子dev_open_window(::Row,Column,Width,Height,Background:WindowHandle)來(lái)新增一個(gè)圖形窗口。算子參數(shù)Row、Column為窗口起始坐標(biāo)(默認(rèn)值都為零),參數(shù)Width、Height是指窗口的寬度和高度(默認(rèn)值都為512),Background為窗口的背景顏色(默認(rèn)為“black”),WindowHandle是指窗口句柄。新建窗口時(shí)如果不知道窗口的確定尺寸,可將窗口的高度和寬度都設(shè)置為"-1",設(shè)置為"-1"表示窗口大小等于最近打開(kāi)的圖像大小,具體算子為:dev_open_window(0,0,-1,-1,‘black’,WindowHandle)。HALCON數(shù)字圖像處理2.HALCON圖像顯示打開(kāi)HDevelop的變量窗口,雙擊圖像變量目錄下已存在的圖像,圖像就會(huì)顯示在圖形窗口。圖形窗口顯示的圖像可以進(jìn)行縮放,直接把鼠標(biāo)放到要進(jìn)行縮放的區(qū)域,滑動(dòng)鼠標(biāo)中間滾輪進(jìn)行縮放操作,要恢復(fù)原有尺寸只需要在圖形窗口點(diǎn)擊“適應(yīng)窗口”。我們也可以通過(guò)菜單欄>可視化>設(shè)置參數(shù)>縮放,對(duì)顯示的圖像進(jìn)行縮放,在想要放大的區(qū)域點(diǎn)擊放大或者縮小按鈕,要回復(fù)原有尺寸直接點(diǎn)擊“重置”按鈕。2.圖像顯示HDevelop中顯示圖像通常使用dis_display算子,格式為:dev_display(Object:::)。運(yùn)行模式下運(yùn)行算子時(shí)圖形窗口會(huì)實(shí)時(shí)更新,如果只想通過(guò)圖像顯示算子在圖形窗口顯示某些圖像(image,region或xld)就可以關(guān)閉窗口的更新。我們可以通過(guò)調(diào)用dev_update_window(‘off')語(yǔ)句關(guān)閉窗口的更新。也可以HALCON數(shù)字圖像處理2.HALCON圖像顯示通過(guò)菜單欄>可視化>更新窗口>單步模式>清空并顯示命令,關(guān)閉窗口的更新。如果關(guān)閉了窗口的更新,則只能手動(dòng)調(diào)用dev_display()操作來(lái)顯示圖像。3.顯示文字顯示文字常用的disp_message算子與write_string算子。(1)disp_message為外部算子,算子格式為:disp_message(::WindowHandle,String,CoordSystem,Row,Column,Color,Box:)。算子作用:在窗口中顯示字符串。WindowHandle為窗口句柄;String為要顯示的字符;CoordSystem為當(dāng)前的操作系統(tǒng);Row、Column為窗口中顯示的起始坐標(biāo);HALCON數(shù)字圖像處理2.HALCON圖像顯示Color為字體顏色;Box為是否顯示白色的底紋。(2)write_string算子格式為:write_string(::WindowHandle,String:)算子作用:在窗口已設(shè)定的光標(biāo)位置顯示字符串。write_string一般與set_tposition配合使用,先使用set_tposition算子設(shè)置光標(biāo)位置,然后使用write_string在光標(biāo)位置處輸出字符串。顯示文字必須適合右側(cè)窗口邊界(字符串的寬度可由get_string_extents算子查詢)。HALCON數(shù)字圖像處理2.HALCON圖像顯示【例2-10】圖像顯示實(shí)例*關(guān)閉窗口dev_close_window()*打開(kāi)新窗口dev_open_window(0,0,400,400,'white',WindowID)*設(shè)置顏色dev_set_color('red')*畫(huà)箭頭disp_arrow(WindowID,255-20,255-20,255,255,1)*在窗口中顯示字符串disp_message(WindowID,'顯示文字1','window',20,20,'black','true')dev_set_color('blue')*設(shè)置光標(biāo)位置HALCON數(shù)字圖像處理2.HALCON圖像顯示set_tposition(WindowID,40,40)*在窗口已設(shè)定光標(biāo)位置顯示字符串write_string(WindowID,'顯示文字2')*設(shè)置光標(biāo)位置set_tposition(WindowID,255,255)*讀取字符串read_string(WindowID,'Default',32,OutString)程序執(zhí)行,結(jié)果如圖2-36所示。圖2-36顯示文字處理結(jié)果HALCON數(shù)字圖像處理3.HALCON圖像轉(zhuǎn)換1.RGB圖像轉(zhuǎn)換成灰度圖RGB圖像轉(zhuǎn)換成灰度圖可以使用rgb1_to_gray算子,其格式為:rgb1_to_gray(RGBImage:GrayImage::)很明顯,RGBImage與GrayImage分別是輸入、輸出圖像參數(shù)。如果輸入圖像是三通道圖像,RGB圖像的三個(gè)通道可以根據(jù)以下公式轉(zhuǎn)化成灰度圖。灰色值=0.299*紅色值+0.587*綠色值+0.114*藍(lán)色值如果RGBImage中輸入圖像是單通道圖像,GrayImage灰度圖將直接復(fù)制RGBImage進(jìn)行輸出?!纠?-11】RGB圖轉(zhuǎn)灰度圖實(shí)例*讀取圖像read_image(Earth,'earth.png')*RGB圖像轉(zhuǎn)換成灰度圖像rgb1_to_gray(Earth,GrayImage)程序執(zhí)行,圖像變量如圖2-37所示。HALCON數(shù)字圖像處理3.HALCON圖像轉(zhuǎn)換圖2-37RGB圖像轉(zhuǎn)換成灰度圖HALCON數(shù)字圖像處理3.HALCON圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)彩色半球高感度高解析攝像機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)合金球板市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)ZSPR超輕型調(diào)節(jié)閥市場(chǎng)調(diào)查研究報(bào)告
- 2025-2030智能攝像機(jī)市場(chǎng)前景分析及投資策略與風(fēng)險(xiǎn)管理研究報(bào)告
- 2025-2030投影機(jī)行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與規(guī)劃建議研究報(bào)告
- 2025-2030巧克力和糖果加工設(shè)備行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030家用投影機(jī)行業(yè)行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- 2025-2030安防產(chǎn)業(yè)政府戰(zhàn)略管理與區(qū)域發(fā)展戰(zhàn)略研究報(bào)告
- 2025-2030多向叉車行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030國(guó)內(nèi)IC卡行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景與投資機(jī)會(huì)研究報(bào)告
- 四年級(jí)下英語(yǔ)Unit1PartBLet'slearn
- 水穩(wěn)基層振動(dòng)成型法科研路段施工技術(shù)
- 陜西省社區(qū)社會(huì)組織負(fù)責(zé)人備案表
- 微信生態(tài)運(yùn)營(yíng)全景解讀
- 《陜西省全過(guò)程工程咨詢服務(wù)導(dǎo)則(試行)》
- 辯論理論之需根解損(需要性、根屬性、解決力、損益比)
- (完整版)道路交通事故現(xiàn)場(chǎng)圖繪制課件
- 現(xiàn)代一體化手術(shù)室建設(shè)發(fā)展現(xiàn)狀及展望
- 經(jīng)緯度數(shù)轉(zhuǎn)換工具
- NB_T 10438-2020《風(fēng)力發(fā)電機(jī)組 電控偏航控制系統(tǒng)技術(shù)條件》_(高清最新)
- 混凝土凝結(jié)時(shí)間計(jì)算及報(bào)告(樣表)
評(píng)論
0/150
提交評(píng)論