?怎么用HALCON去開發(fā)應(yīng)用程序
HALCON為應(yīng)用開發(fā)提供了許多方法绍绘,但是為了充分利用架構(gòu)迎膜,推薦如圖1所示的模式。
圖像監(jiān)督伦连,視覺方法原型設(shè)計(jì)及最后的開發(fā)都在HDevelop中執(zhí)行拳昌,因此袭异,整個(gè)程序由許多子程序組成,每一個(gè)代表代表一個(gè)諸如初始化炬藤,處理或者清除的子任務(wù)御铃。主程序僅僅是作為一個(gè)通過傳入圖像和接受結(jié)果去調(diào)用子程序的測(cè)試環(huán)境。
一個(gè)完整的應(yīng)用是在一個(gè)編程環(huán)境中開發(fā)的沈矿,如Microsoft Visual Studio上真。這有兩種方法去集成HDevelop程序:要不你導(dǎo)出程序?yàn)槟愕木幊陶Z言,然后倒入它們羹膳,例如借助include聲明睡互。另外,你可以借助HDevEngine直接去執(zhí)行HDevelop程序陵像。用戶接口和其他必要代碼被所給語言的標(biāo)準(zhǔn)機(jī)制來執(zhí)行就珠;最后工程被編譯和連接。
同HALCON庫一起醒颖,被生成的應(yīng)用程序代表了解決方案妻怎,能夠被加載到目標(biāo)機(jī)器上或被發(fā)送給客戶。
三步方法有數(shù)個(gè)優(yōu)勢(shì):
無論什么時(shí)候图贸,視覺部分會(huì)很容易地被優(yōu)化或?qū)捳辊寮荆驗(yàn)閷?duì)于圖像數(shù)據(jù)的監(jiān)督和調(diào)試工具冕广,HDevelop比標(biāo)準(zhǔn)的編程環(huán)境要好的多疏日。
如果你用HDevEngine,當(dāng)你改變了HDevolop程序后撒汉,你不必要去重新編譯和連接你的應(yīng)用(前提是你不改變各個(gè)程序的簽名)沟优。如果你用的是導(dǎo)出代碼的方式,你不需要去修改應(yīng)用的其他部分睬辐,但需要重新編譯和連接應(yīng)用程序挠阁。
因?yàn)橐曈X部分是與一般的代碼分離的宾肺,所以其可以以一種獨(dú)立的方式被執(zhí)行。另外侵俗,你不必要將整個(gè)工程發(fā)送給別人锨用。對(duì)于技術(shù)支持問題,有一張或者多張圖像的HDevelop程序可以快速的發(fā)送給經(jīng)銷商隘谣。
最后增拥, 對(duì)于在其他架構(gòu)上如Linux上的重新使用會(huì)很容易實(shí)現(xiàn)的,因?yàn)镠Develop在多操作系統(tǒng)上以相同的方式來運(yùn)行寻歧。
需要注意的是掌栅,對(duì)于這兩種方式(HDevEngine或者導(dǎo)出),應(yīng)用僅僅包含HALCON的函數(shù)码泛,諸如助手或者GUI元素等HDevelop有力的開發(fā)工具不能夠被所使用的編程語言所訪問的猾封。
窺視HALCON底層:架構(gòu)和數(shù)據(jù)結(jié)構(gòu)
HALCON的架構(gòu),數(shù)據(jù)結(jié)構(gòu)和內(nèi)部的機(jī)制是根據(jù)哲學(xué)思想來開發(fā)的噪珊,具有:
(1)高效
(2)開放
(3)標(biāo)準(zhǔn)
(4)自由描述
高效意味著每一個(gè)HALCON算子的執(zhí)行時(shí)間會(huì)盡可能的短晌缘。另外,操作算子已近被設(shè)計(jì)成一個(gè)標(biāo)準(zhǔn)序列卿城,更復(fù)雜的任務(wù)的完成也會(huì)保持高效枚钓。
開放的架構(gòu)在兩方面:首先,你可以在許多不同的編程語言下使用HALCON瑟押,傳遞外部數(shù)據(jù)到HALCON和訪問HALCON內(nèi)部數(shù)據(jù)也是被支持的搀捷。最后,HALCON又透明的接口去集成用戶定義的操作算子和非標(biāo)準(zhǔn)圖像采集設(shè)備(不會(huì)改變HALCON的安裝)多望。
標(biāo)準(zhǔn)化意味著操作算子和數(shù)據(jù)結(jié)構(gòu)的簽名嫩舟,命名和使用都遵循嚴(yán)格規(guī)則,這就能夠保證在較少錯(cuò)誤的情況下怀偷,快速的學(xué)習(xí)家厌。
最后,HALCON提供每個(gè)操作算子及其他們參數(shù)詳細(xì)的信息椎工,不僅僅在文檔中饭于,也可通過特定的算子在線查看。
圖2描述了HALCON的基本架構(gòu)维蒙,主要部分是圖像處理庫掰吕,其由數(shù)量眾多的算子構(gòu)成,你可以以擴(kuò)展包的形式來開發(fā)你自己的算子颅痊。你可以通過所謂的語言接口殖熟,如HALCON/C++來在你的應(yīng)用中使用這些算子。這些庫允許以不同編程語言特定的編程風(fēng)格直接使用這些操作算子斑响。HDevelop也會(huì)用編程語言的接口菱属,但對(duì)用戶這是透明的钳榨。
對(duì)于圖像采集設(shè)備的訪問,HALCON提供了所謂圖像采集接口的公共接口纽门。其允許以共同的方式來用完全不同的采集設(shè)備薛耻。包含特定設(shè)備執(zhí)行的庫當(dāng)需要的時(shí)候會(huì)被動(dòng)態(tài)的加載。
類似的赏陵,I/O設(shè)備通過特定設(shè)備I/O設(shè)備接口來訪問昭卓,這些接口允許以共同的方式去訪問不同的I/O設(shè)備,庫也是當(dāng)需要的時(shí)候被動(dòng)態(tài)的加載的瘟滨。