HALCON基礎(chǔ)篇:HALCON應(yīng)用開發(fā)

?怎么用HALCON去開發(fā)應(yīng)用程序

HALCON為應(yīng)用開發(fā)提供了許多方法,但是為了充分利用架構(gòu),推薦如圖1所示的模式。

圖像監(jiān)督,視覺方法原型設(shè)計及最后的開發(fā)都在HDevelop中執(zhí)行,因此,整個程序由許多子程序組成,每一個代表代表一個諸如初始化,處理或者清除的子任務(wù)。主程序僅僅是作為一個通過傳入圖像和接受結(jié)果去調(diào)用子程序的測試環(huán)境。

一個完整的應(yīng)用是在一個編程環(huán)境中開發(fā)的,如Microsoft Visual Studio。這有兩種方法去集成HDevelop程序:要不你導(dǎo)出程序為你的編程語言,然后倒入它們,例如借助include聲明。另外,你可以借助HDevEngine直接去執(zhí)行HDevelop程序。用戶接口和其他必要代碼被所給語言的標(biāo)準(zhǔn)機(jī)制來執(zhí)行;最后工程被編譯和連接。

同HALCON庫一起,被生成的應(yīng)用程序代表了解決方案,能夠被加載到目標(biāo)機(jī)器上或被發(fā)送給客戶。

圖1 三步方法實現(xiàn)應(yīng)用開發(fā)

三步方法有數(shù)個優(yōu)勢:

無論什么時候,視覺部分會很容易地被優(yōu)化或?qū)捳?,因為對于圖像數(shù)據(jù)的監(jiān)督和調(diào)試工具,HDevelop比標(biāo)準(zhǔn)的編程環(huán)境要好的多。

如果你用HDevEngine,當(dāng)你改變了HDevolop程序后,你不必要去重新編譯和連接你的應(yīng)用(前提是你不改變各個程序的簽名)。如果你用的是導(dǎo)出代碼的方式,你不需要去修改應(yīng)用的其他部分,但需要重新編譯和連接應(yīng)用程序。

因為視覺部分是與一般的代碼分離的,所以其可以以一種獨(dú)立的方式被執(zhí)行。另外,你不必要將整個工程發(fā)送給別人。對于技術(shù)支持問題,有一張或者多張圖像的HDevelop程序可以快速的發(fā)送給經(jīng)銷商。

最后, 對于在其他架構(gòu)上如Linux上的重新使用會很容易實現(xiàn)的,因為HDevelop在多操作系統(tǒng)上以相同的方式來運(yùn)行。


需要注意的是,對于這兩種方式(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)自由描述

高效意味著每一個HALCON算子的執(zhí)行時間會盡可能的短。另外,操作算子已近被設(shè)計成一個標(biāo)準(zhǔn)序列,更復(fù)雜的任務(wù)的完成也會保持高效。


開放的架構(gòu)在兩方面:首先,你可以在許多不同的編程語言下使用HALCON,傳遞外部數(shù)據(jù)到HALCON和訪問HALCON內(nèi)部數(shù)據(jù)也是被支持的。最后,HALCON又透明的接口去集成用戶定義的操作算子和非標(biāo)準(zhǔn)圖像采集設(shè)備(不會改變HALCON的安裝)。


標(biāo)準(zhǔn)化意味著操作算子和數(shù)據(jù)結(jié)構(gòu)的簽名,命名和使用都遵循嚴(yán)格規(guī)則,這就能夠保證在較少錯誤的情況下,快速的學(xué)習(xí)。


最后,HALCON提供每個操作算子及其他們參數(shù)詳細(xì)的信息,不僅僅在文檔中,也可通過特定的算子在線查看。


圖2 HALCON的基本架構(gòu)

圖2描述了HALCON的基本架構(gòu),主要部分是圖像處理庫,其由數(shù)量眾多的算子構(gòu)成,你可以以擴(kuò)展包的形式來開發(fā)你自己的算子。你可以通過所謂的語言接口,如HALCON/C++來在你的應(yīng)用中使用這些算子。這些庫允許以不同編程語言特定的編程風(fēng)格直接使用這些操作算子。HDevelop也會用編程語言的接口,但對用戶這是透明的。


對于圖像采集設(shè)備的訪問,HALCON提供了所謂圖像采集接口的公共接口。其允許以共同的方式來用完全不同的采集設(shè)備。包含特定設(shè)備執(zhí)行的庫當(dāng)需要的時候會被動態(tài)的加載。


類似的,I/O設(shè)備通過特定設(shè)備I/O設(shè)備接口來訪問,這些接口允許以共同的方式去訪問不同的I/O設(shè)備,庫也是當(dāng)需要的時候被動態(tài)的加載的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文參加#未完待續(xù),就要表白#活動,本人承諾,文章內(nèi)容為原創(chuàng),且未在其他平臺發(fā)表過。 “北冥有魚,其名為鯤,鯤之大...
  • 以后 想 做一個隨性人 路遇大雨,能笑著奔跑 再遇謠言,能淡然而過 孤身一人,能扛起未知 朋友成群,能不失本心 默...
    涼淵閱讀 206評論 0 0
  • 我這個人對戒指之類的有執(zhí)念。但是居然想送給宿舍里一妹子最喜歡的戒指哈哈,很不錯哦,已經(jīng)變成了極簡主義者。
    brekker閱讀 116評論 0 0
  • 昨晚朋友打電話來訴苦,他是公司的項目負(fù)責(zé)人,因為一件事情處理不當(dāng),不知道被誰告狀告到老板那里。老板不問青紅...
    木老頭兒閱讀 1,088評論 20 47

友情鏈接更多精彩內(nèi)容