




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、hexsight 開發(fā)visual c+ 篇本章節(jié)的指南將指導(dǎo)你通過使用visual c+對hexsight進(jìn)行開發(fā)。只要你跟著指南的每一個步驟進(jìn)行下去,就能逐步全面的了解如何為你的檢測工具添加和配置目標(biāo)定位應(yīng)用程序。注意:本指南假定你對于visual c+, mfc and com有一定的初級知識。若想查看開發(fā)包自帶的編輯指南程序原文件,mfc源代碼必須安裝,且visualc+_pathmfcsrc,“visualc+ pathinclude”, “visualc+ pathmfcinclude”,”visualc+ pathatlinclude”目錄必須增加到vc+的搜索路徑的清單上,用來
2、發(fā)現(xiàn)所包含的文件(在vc+的菜單欄中選擇:工具選擇目錄附加到搜索路徑清單上的目錄)章節(jié)概要指南 1:定位器(locator)指南 2:顯示(display)指南 3:卡尺(caliper)指南 4:斑點(diǎn)分析器(blob analyzer)指南 5:模板定位器(pattern locator)指南 6:邊緣定位器(edge locator)指南 7:標(biāo)定(calibration)指南 1: 定位器(locator)介紹第一個指南將告訴你怎樣建立一個基本的hexsight應(yīng)用程序,無論已定義模板的物體以什么角度和位置呈現(xiàn)出來,該程序都可以給其定位。創(chuàng)建工程在這一部分,你將創(chuàng)建應(yīng)用程序的工程,增加基
3、本代碼實(shí)現(xiàn)與工作界面的交互,而且增加hexsight應(yīng)用程序的控制部件,你將通過編輯它來建立應(yīng)用程序。建構(gòu)工程這里將指導(dǎo)你如何建立工程如何為工程選擇合適的風(fēng)格類型,以及需要在工程中添加哪些必須的文件來創(chuàng)建應(yīng)用程序。1啟動visual c+,創(chuàng)建一個新的mfc appwizard (exe) 工程。命名為hookinspection,創(chuàng)建一個任意名字的工作文件夾,并在路徑選擇中指定創(chuàng)建好的文件夾的準(zhǔn)確路徑,然后點(diǎn)擊ok。2在mfc appwizard里的step 1,選擇dialog based。3在step 2中, 禁用about box選項(xiàng) ,并規(guī)定 hook inspection 為對話框
4、標(biāo)題。點(diǎn)擊finish。4. developer studio 將告訴你,你的程序工程的框架將使用哪些選項(xiàng),點(diǎn)擊 ok.5. wizard 產(chǎn)生的最重要的文件是hookinspectiondlg.h 和 hookinspectiondlg.cpp。你可以開始編輯這個基本的工程了,但是你必須為你的程序增加一些程序代碼并創(chuàng)建界面,這樣才能使之成為一個可用的工程。建構(gòu)程序界面在此你將建立工作界面,你可通過它和你的應(yīng)用程序以及視覺檢測結(jié)果進(jìn)行交互。1 點(diǎn)擊位于workspace窗口左下方的resourceview按鍵,打開該工程的對話框模板。2. 選擇對話框模板,并重新設(shè)置合適的尺寸,約 226 x
5、149。看屏幕下方的狀態(tài)區(qū),尺寸會在右邊顯示。3. 在對話框上, 刪掉原有的所有對話條目,增加一個group box控件。在group box控件中添加5個edit box控件,相應(yīng)的命名為idc_edit_type,idc_edit_scale,idc_edit_rotation,idc_edit_translation_x和idc_edit_translation_y。設(shè)置group box的標(biāo)題,設(shè)置五個edit box的尺寸并為他們添加static text控件作為標(biāo)簽。edit box中應(yīng)是空白的。你的對話框看起來如圖1的: 圖1:visual c+目標(biāo)形態(tài)對話框4. 在對話框的底部
6、,增加3個命令按鈕(button控件)并命名為idc_button_inspect, idc_button_configure和idc_button_quit。給它們設(shè)置相應(yīng)的標(biāo)題為:inspect,configure 和quit.5. 增加一個check box控件,并命名為idc_check_continuous,設(shè)置其標(biāo)題為continuous mode,最后增加一個編輯窗口命名為idc_edit_time 和一個合適的標(biāo)簽(static text)。讓其看起來如圖2。界面就此完成,存盤。圖2:帶有命令按鈕的visual c+對話框增加成員變量為了簡化和界面的交互,我們將要通過mfc c
7、lasswizard的幫助增加一些成員變量。1.按ctrl+w;就會彈出mfc classwizard 窗口。2. 點(diǎn)擊 member variables 成員變量按鈕,然后在class name combo box中選擇chookinspectiondlg. 你就會看到如下圖3的對話框。圖3:mfc classwizard 成員變量編輯器3.對于每一個控制id,你都必須增加一個成員變量。要增加成員變量,雙擊控制id然后填寫表格。下面你可以看見idc_button_configure完成后的形式如圖4。圖4:通過 mfc增加一個成員變量4.根據(jù)表1的清單增加其它的成員變量表1:成員變量cont
8、rolidtypeidc_button_inspectcbuttonminspectbuttonidc_button_quitcbuttonmquitbuttonidc_check_continuouscbuttonmcontinuouscheckidc_edit_rotationceditmrotationtextidc_edit_scaleceditmscaletextidc_edit_timeceditmtimetextidc_edit_translation_xceditmtranslationxtextidc_edit_translation_yceditmtranslationyt
9、extidc_edit_typeceditmtypetext增加一個 hexsight 應(yīng)用控制組件你將要給對話框增加一個activex控制組件。hexsight應(yīng)用控制組件是每一個hexsight機(jī)器視覺應(yīng)用系統(tǒng)的核心。1. 在對話框模板上單擊鼠標(biāo)右鍵,在窗口的頂部選擇insert activex control.2. 下拉滾動條,找到 hsapplication control。選中它然后點(diǎn)擊ok。于是hexsight應(yīng)用控制組件便作為一個新的圖標(biāo)顯示于對話框。可以把它拖放至一個合適的位置如圖5。圖5:帶hexsight 應(yīng)用組件的對話框3. 鼠標(biāo)在hexsight application
10、 control 圖標(biāo)上單擊右鍵,然后在彈出菜單中選擇properties,為其命名為idc_control_application。4. 你必須在類里手動增加一個數(shù)據(jù)成員。注意:不要用classwizard來為hexsight控制組件增加變量。由classwizard生成的wrappers 在使用hexsight activex 控制庫時可能產(chǎn)生兼容性的問題。在hexsight下你必須分布式使用 wrappers。當(dāng)你增加一個hexsight 控制組件,要采取以下步驟。5. 打開 hookinspectiondlg.h 文件。在現(xiàn)有的語句(普通字體顯示)之后增加以下語句(粗體顯示):#if_
11、msc_ver=1000#pragma once#endif/_msc_ver_=1000#include hsapplication.h./afx_data(chookinspectiondlg)enumidd=idd_hookinspection_dialog;hsapplication mapplicationcontrol;6.打開hookinspectiondlg.cpp 文件,并在dodataexchange函數(shù)中增加以下語句(黑體)。/afx_data_map(chookinspectiondlg)ddx_control(pdx,idc_control_application,
12、mapplicationcontrol);7. 在屏幕底部選擇fileview 鍵。8. 右擊 hookinspection 文件節(jié)點(diǎn),選擇add files to project。9. 進(jìn)入 hexsight的安裝目錄然后打開wrappers目錄。記錄該目錄的完整路徑,你稍后將會用到它。10.選擇以下文件: hsapplication.h, hsapplication.cpp, hsarc.h,hsarc.cpp, hsline.h, hsline.cpp, hsmodeloptimizerinterface.h, hsmodeloptimizerinterface.cpp, hspoint
13、.h, hspoint.cpp, hscalibration.h, hscalibration.cpp, hsdatabase.h, hsdatabase.cpp,hserrorobject.h, hserrorobject.cpp, hsexplorer.h, hsexplorer.cpp, hsimage.h, hsimage.cpp, hslocator.h, hslocator.cpp,hsmodeleditorinterface.h, hsmodeleditorinterface.cpp,hsprocessmanager.h, hsprocessmanager.cpp, hsscen
14、e.h, hsscene.cpp,hsview.h 和 hsview.cpp. 點(diǎn)擊 ok.11. 在編輯之前,向目錄清單增加wrappers路徑,該目錄用于所包含文件的搜索。使用菜單欄中的project/setting. . 選擇c/c+ 鍵,然后選擇分類(category)為:preprocessor。修改combo box 的設(shè)置(setting for)為:適合所有配置(all configuration)。把wrappers 路徑(先前提到的)增加到additional include directories編輯欄中去。點(diǎn)擊ok.12. 現(xiàn)在你可以編輯你的工程而不會收到錯誤信息。給主
15、框加程序增加基本代碼你需要增加基本代碼,這樣就可和你的應(yīng)用系統(tǒng)進(jìn)行交互。當(dāng)在瀏覽該指南的其它章節(jié),需要給應(yīng)用程序增加新的功能時,你只需在程序代碼中增加些其他語句即可。1. 返回至資源編輯器(resource editor),打開你的應(yīng)用程序的對話欄。2. 鼠標(biāo)左鍵雙擊quit.3. 此時會彈出一個窗口(如果沒有,這是因?yàn)椤癲ouble-click in dialog editor edits” 的代碼選項(xiàng)(在toolsoptionscompatibility tab中)并沒有被選中)。雙擊消息bn_clicked,會彈出對話框要你確定所增加函數(shù)的名字,接受缺省名(onbuttonquit)。4
16、.點(diǎn)擊edit existing然后在函數(shù)中增加以下語句:void chookinspectiondlg:onbuttonquit()waitforcompletion();enddialog( idok );這樣當(dāng)點(diǎn)擊quit鍵時,就會終止應(yīng)用程序。5. 你必須給你的工程增加waitforcompletion函數(shù)。點(diǎn)擊classview 鍵而且右擊chookinspectiondlg類,選擇add member function.命令。該函數(shù)類型是void,把它聲明為waitforcompletion。指出該函數(shù)是private。點(diǎn)擊ok,在該函數(shù)中增加以下語句:void chookinsp
17、ectiondlg:waitforcompletion()if ( mcontinuouscheck.getcheck() != 0 )mcontinuouscheck.setcheck( 0 );6. 返回資源編輯器,雙擊configure (按照創(chuàng)建quit鍵相同的步驟進(jìn)行)在代碼中增加以下語句:void chookinspectiondlg:onbuttonconfigure()mapplicationcontrol.showinterface( false ,hexsight_none);這些代碼使得當(dāng)你在程序?qū)υ捒蛑悬c(diǎn)擊configure按鈕時彈出hexsight applicati
18、on control的一個非模態(tài)對話框界面.7. 在資源編輯器中,雙擊inspect (按照創(chuàng)建quit鍵相同的步驟進(jìn)行) 在代碼中增加以下語句:void chookinspectiondlg:onbuttoninspect()tryhsprocessmanager lmanager;minspectbutton.enablewindow( false );lmanager = mapplicationcontrol.getprocessmanager();/ inspection loopdodoevents();while( mcontinuouscheck.getcheck() = 1
19、);minspectbutton.enablewindow( true );catch( . )minspectbutton.enablewindow( true );throw ;這是一個用于檢查應(yīng)用程序的主循環(huán)。直到在界面中使continuous mode失效,它才會結(jié)束循環(huán)。8. 在c+中,沒有與visual basic中doevents函數(shù)功能相當(dāng)?shù)暮瘮?shù)。因此你必須自己創(chuàng)建doevents函數(shù)。點(diǎn)擊classview 鍵而且右擊chookinspectiondlg類,選擇add member function.命令。該函數(shù)類型是void,把它聲明為doevents(void)。點(diǎn)擊ok
20、,在該函數(shù)中增加以下語句:chookinspectiondlg:doevents( )msg lmessage;while ( peekmessage( &lmessage, null, 0, 0, pm_remove ) !=false )translatemessage( &lmessage );dispatchmessage( &lmessage );9. 最后,你必須在退出程序之前增加消息操作器來停止連續(xù)模式(continuous mode)。按ctrl+w;就會彈出mfc classwizard。點(diǎn)擊消息映像message maps按鈕。在類名中選擇chookinspectiondl
21、g。在目標(biāo)ids(object ids)中選擇chookinspectiondlg。在消息清單中,找到并雙擊wm_close和wm_destro0y。在新的函數(shù)中增加以下語句:void chookinspectiondlg:onclose()waitforcompletion();cdialog:onclose();void chookinspectiondlg:ondestroy()cdialog:ondestroy();waitforcompletion();10. 你已完成了該應(yīng)用程序的代碼編制。運(yùn)行并調(diào)試該應(yīng)用程序。當(dāng)你確信一切正常,就可以寸盤,然后繼續(xù)下一個節(jié)。增加獲取設(shè)備(acqu
22、isition device)工具在本節(jié),你將學(xué)到怎樣在hexsight application control中例示一個程序。你同樣會學(xué)到怎樣配制一個獲取設(shè)備工具(acquisition device)。該工具可從現(xiàn)有的數(shù)據(jù)庫文件中獲取一個灰度值圖像來模擬所獲取的實(shí)際圖像。對該獲取設(shè)備進(jìn)行示例為了建立視覺應(yīng)用程序,hexsight程序被用來作為應(yīng)用程序控制過程管理器(application controls manager)進(jìn)行示例。1. 在對話模板上,右擊hexsight application control。從菜單中選擇hsapplication control objectedit。
23、這時會顯示hexsight應(yīng)用程序控制器(application controls manager)界面,激活的頁面就是程序管理器(process manager)。在程序管理器(available process)的可用程序清單中,選擇hsacquisitiondevice然后點(diǎn)擊add process。獲取設(shè)備(acquisition device)的窗口就會顯示出來。在此本節(jié)指南的最后,hexsight 應(yīng)用程序控制器應(yīng)如圖6所示:圖6:hexsight應(yīng)用控制程序管理器配置獲取設(shè)備(acquisition device)你將用現(xiàn)有的圖像資料來模仿所獲取的實(shí)際圖像。用于該指南的數(shù)據(jù)庫是建
24、立在相同的目標(biāo)圖像之上的,只是實(shí)際圖像旋轉(zhuǎn)了不同的角度而已。1.在獲取設(shè)備通用面板(acquisition device general panel)中,鍵入acquisition作為程序名(取代hsacquisitiondevice0)2.在configuration面板中,選擇input鍵,從清單中選擇file emulation。3.點(diǎn)擊load然后載入以下文件:installationpathtutorialvisualc+hookinspectiondatahook.hdb.4. 除了第一個image0,使所有數(shù)據(jù)庫的其它圖像不被選中,這就確保在稍后的指南中該圖像可被用來創(chuàng)建摸板。圖
25、7:獲取設(shè)備配置面板5. 在標(biāo)定(calibration)和輸出(output)子面板中保留缺省設(shè)置,點(diǎn)擊ok返回hexsight應(yīng)用控制系統(tǒng)(application control)的程序管理器(process manager)。為繼續(xù)完成程序管理器(process manager)中的程序示例,你可以點(diǎn)擊execute sequence。舉例來說,如果不止一個可用的圖像存在于獲取設(shè)備(acquisition device)的清單(emulation list)中,點(diǎn)擊程序管理器中的execute sequence就會輸出一個新的灰度圖像,然后執(zhí)行清單中隨后的程序。顯示背景(scenes)和
26、圖像(images)hexsight應(yīng)用控制系統(tǒng)(application control)的explorer面板中顯示了應(yīng)用程序運(yùn)行數(shù)據(jù)庫中所有視圖的層次關(guān)系,背景(scenes)和圖像(images)都保留在應(yīng)用程序的數(shù)據(jù)庫中。1. 在hexsight 應(yīng)用控制系統(tǒng)(application control)中選擇explorer面板。2. 點(diǎn)擊旁邊的 + 號來展開數(shù)據(jù)庫。3.展開acquisition, 然后是images. 點(diǎn)擊grey-scale image。這將顯示由獲取程序輸出的灰度圖像,如圖8所示:圖8:hexsight應(yīng)用控制系統(tǒng) explorer增加定位器工具(locator
27、tool)使用輪廓的幾何因素,定位器(locator)可以找到用輸入灰度圖像定義了模板的目標(biāo)。定位器(locator)的界面提供: 一個對輸入和輸出進(jìn)行配置的綜合面板(general)。 一個輪廓面板(contour)。該面板可以設(shè)置圖像中感興趣的部分而且可以隨意訂制輪廓檢測參數(shù)。 一個用于創(chuàng)建和編輯模板用的模板(model)。 一個搜索(search)面板。該面板是用于對旋轉(zhuǎn)、灰度因素、所找到的目標(biāo)數(shù)量等參數(shù)設(shè)定約束條件的。 一個結(jié)果面板(result)可以用來顯示搜索的結(jié)果。初始化定位器(locator)這里增加一個定位器(locator)程序,其方法與增加獲取設(shè)備(acquisition
28、 device)的步驟相同。1. 在hexsight應(yīng)用控制程序管理器(application control process manager)中,從hexsight locator tools文件夾中選擇hslocator點(diǎn)擊add process.2. 在新增加的定位器(locator)程序的屬性窗中,選擇general 鍵3. 鍵入名字 locator ,取代 hslocator1.4. 在輸入部分,點(diǎn)擊數(shù)據(jù)庫選擇圖標(biāo),然后選擇acquisition-grey-scale image. 如圖9:圖9:數(shù)據(jù)庫選擇圖標(biāo)5.在輸出框架中保留缺省名 model view 和instance sc
29、ene。保留它們相應(yīng)的check box,這樣就能確保模板顯示和實(shí)例背景輸出到運(yùn)行數(shù)據(jù)庫。6. 點(diǎn)擊execute.輪廓(contour)檢測參數(shù)1. 選擇 contour 鍵2. 保留search area的缺省設(shè)置.為了加速定位器 (locator)程序速度,使entire imagecheck box不被選中可以強(qiáng)制搜索輸入圖像的特定區(qū)域而非完整的圖像,叫做搜索區(qū)search area。entire image特征不被用于這個指南。3.為 detection 參數(shù)保留缺省設(shè)置。設(shè)置parameter based on combo box為all models,將可以為當(dāng)前模板自動選擇最佳
30、輪廓檢測參數(shù)。通過在combo box選擇custom可以手動訂制輪廓的檢測方案。通常輪廓檢測參數(shù)的自動選擇都能工作的最好,只有在輸入圖像等級較差時才有必要采用手動訂制方案。4.點(diǎn)擊 execute.后,通過點(diǎn)擊顯示窗下方的 detail, level 或 both 鍵來觀察輪廓粗糙度等級的不同。創(chuàng)建模板在這一部分,你將學(xué)到怎樣用模板編輯器來創(chuàng)建一個目標(biāo)的模板。模板是一個參考或一種概念,它代表了將要被定位器(locator)的搜索程序用來識別以及給定位的目標(biāo)的輪廓。該模板可被存儲于數(shù)據(jù)庫文件中,以便以后使用。1. 選擇model鍵,然后在models框中點(diǎn)擊add鍵。然后create new
31、model對話框馬上顯示出來如圖10圖10:創(chuàng)建新模板對話框2. 給模板命名hook.3. 點(diǎn)擊ok打開模板編輯器(model editor)使用模板編輯器(model editor)模板編輯器用來創(chuàng)建新模板以及修改現(xiàn)存的模板。一旦你已經(jīng)創(chuàng)建了用于該應(yīng)用程序的hook模板,你可以將其保存,以便以后再用。創(chuàng)建源輪廓線以及選擇模板特征定位器使用兩個粗糙等級來識別目標(biāo)以及為目標(biāo)定位:outline level和detail level。outline level被用來快速識別潛在的目標(biāo)實(shí)例。detail level被用來在圖像內(nèi)確定這是否是正確的目標(biāo)以及精確定位。當(dāng)選擇outline level和d
32、etail level,源輪廓將會被創(chuàng)建。然后從源輪廓選擇特征來創(chuàng)建模板。當(dāng)automatic levels check box被選中時,這兩個輪廓檢測參數(shù)(outline level 和 detail level) 將通過分析模板的邊界區(qū)域自動實(shí)現(xiàn)最優(yōu)化。通常在創(chuàng)建一個模板時采用自動輪廓檢測參數(shù)。當(dāng)產(chǎn)生源輪廓時,contrast threshold 被用來設(shè)置靈敏性并進(jìn)行對比。通過在combo box選擇fixed value可以手動設(shè)置contrast threshold,或通過選擇adaptive low sensitivity, adaptive normal sensitivity
33、或 adaptive high sensitivity.來進(jìn)行自動設(shè)置。tracking inertia被用來密和源輪廓中出現(xiàn)的小間隙。它定義當(dāng)建立源輪廓時,源輪廓中可以被密和來連接兩個邊緣元素的最長的間隙。一旦源輪廓被發(fā)現(xiàn), 必須選擇特征來建立模板。通過設(shè)置 feature selection滑塊到none來手動選擇特征,或通過設(shè)置less, normal, more 或 all進(jìn)行自動選擇特征。設(shè)置滑塊到 normal 將會設(shè)置介于outline和detail等級的最佳特征。增加該設(shè)置將會增加更多特征,但會導(dǎo)致搜索程序變慢。減少設(shè)置會導(dǎo)致識別問題,因?yàn)槟0蹇赡苋鄙倩咎卣?。在本指南中,我?/p>
34、將使用缺省的輪廓探測以及特征選擇參數(shù)來建立模板,如圖11所示:圖11:模板編輯器界面1. 在 contour detection 框中,保留automatic levelscheck box選中,將tracking inertia 置0,以及將contrast threshold combo box置為adaptive normal sensitivity.2.在feature selection框中,保留slider在缺省的normal位置。3.在顯示中,拖動并調(diào)整綠色虛線長方形的大小(該模板的范圍欄)把整個目標(biāo)封裝其內(nèi)。4. 點(diǎn)擊 build model.現(xiàn)在便創(chuàng)建了一個模板。輪廓檢測參數(shù)
35、已被最優(yōu)化處理,而且特征選擇包括了outline和detail levels。outline level被設(shè)為8,而detail level被設(shè)為1。為了校驗(yàn)在建立模板時不會碰到什么問題,檢查messages 文本欄。你可以用顯示窗來觀看模板。通過選擇顯示窗口底部的outline鍵,你可以以outline level來觀看模板。 所選特征以粗體紫紅色線條顯示出來。沒有用到的輪廓以藍(lán)色線條顯示出來。通過選擇顯示窗口底部的detail鍵,可以以detail level來觀看特征。所選特征以粗綠線條顯示出來。在detail level下,沒有用到的輪廓以細(xì)藍(lán)線條顯示出來。點(diǎn)擊顯示窗口底部的both鍵
36、,可以同時觀看outline和detail level。該模板現(xiàn)在可以用來給目標(biāo)定位。我們將對其進(jìn)行編輯,看模板編輯器怎樣能夠用來訂制具體的模板從而用于特定的用途。從模板中刪除特征在本指南中所建立的應(yīng)用程序?qū)⒈挥糜跈z測金屬鉤的外部輪廓的特征。這些步驟將用其外部輪廓進(jìn)行局部的定位,以及應(yīng)用工具來檢查金屬鉤內(nèi)部的長方形,孔型和標(biāo)簽。這些特征都需要被檢測到,因?yàn)樗鼈兛赡茉趯?shí)際的部件中被遺漏、錯誤測量尺寸、或由于外部輪廓而錯誤定位。因?yàn)檫@些特征并不穩(wěn)定,所以他們一定要從模板中被刪除,以達(dá)到圖像外部輪廓定位所能達(dá)到的最高精確度。第一步將是在outline level下刪掉不想要的特征。1. 在顯示窗口底
37、部點(diǎn)擊 outline 鍵。這樣就可以在outline level下編輯模板。在model contents框中的表格顯示 features 子面板,該特征子面板用于模板的outline level。2. 點(diǎn)擊model contents 框中的features 鍵來激活特征表格。3. 通過點(diǎn)擊顯示窗中的特征或在特征欄中選擇特征來選擇所想要得到的圓矩形特征。4 點(diǎn)擊 delete從模板中刪除該特征。第二步將是在detail level下刪掉不想要的特征。1. 在顯示窗口底部點(diǎn)擊 detail 鍵。這樣就可以在detail level下編輯模板。在model contents框中的表格欄顯示 f
38、eatures 子面板,該特征子面板用于模板的detail level。2. 除了外部輪廓,如果要選擇所有其它特征,可以在顯示窗或features欄中,同時按住ctrl并鉤選這些特征。3. 點(diǎn)擊 delete 從模板中刪除這些特征?,F(xiàn)在不穩(wěn)定特征已從模板中刪除。要以outline level和detail level同時觀看,在顯示窗底部點(diǎn)擊both鍵。在這種瀏覽模式下,模板不可編輯。為模板設(shè)置目標(biāo)坐標(biāo)系統(tǒng)關(guān)于部件的外部輪廓,檢測程序需要將該特征的測量尺寸顯示出來。要安裝一個參考框,來顯示這些檢測值,需要為該部件定義一個目標(biāo)坐標(biāo)系。1. 在顯示窗底部點(diǎn)擊outline 或 detail 鍵。這
39、樣就可以編輯目標(biāo)坐標(biāo)系。2. 在model contents框中點(diǎn)擊coordinate system 鍵來激活坐標(biāo)系面板。3. 用鼠標(biāo)在目標(biāo)之上定位坐標(biāo)系標(biāo)記(黃軸),如圖12所示。要旋轉(zhuǎn)目標(biāo)的坐標(biāo)系,點(diǎn)擊x軸或y軸的箭頭,然后拖動鼠標(biāo)。要移動坐標(biāo)系,點(diǎn)擊x軸或y軸的交叉點(diǎn),然后拖動鼠標(biāo)。你也可拖動軸的箭頭來拉長他們,這不會對坐標(biāo)系本身有什么影響,不過可以幫你在長特征上排列標(biāo)記。 通過坐標(biāo)系面板的文本欄使最后的定位變的更精確。圖12:調(diào)整模板坐標(biāo)系的位置和方向給模板增加參考點(diǎn)對于某些應(yīng)用程序而言,將一個定位的目標(biāo)實(shí)例模板上的特殊點(diǎn)的位置轉(zhuǎn)換為世界坐標(biāo)系是很有用的。這樣做不必手工計(jì)算坐標(biāo)的轉(zhuǎn)換
40、,參考點(diǎn)可以定義在模板上。在這一應(yīng)用中,我們將在金屬鉤上方的圓孔上增加參考點(diǎn)。1. 點(diǎn)擊顯示窗底部的outline或detail 鍵,這樣你就可以編輯參考點(diǎn)了。2. 在model contents 框中點(diǎn)擊reference points鍵激活參考點(diǎn)面板。3. 點(diǎn)擊add 增加一個參考點(diǎn)。4. 點(diǎn)擊并拖動目標(biāo)標(biāo)記,給部件中上圓孔的參考點(diǎn)定位。調(diào)節(jié)放大率使之更精確。使用reference points 面板中的文本欄,對其效果進(jìn)行微調(diào)。圖13:使用模板編輯器增加參考點(diǎn)該參考點(diǎn)并不用于給部件定位,只有輪廓特征被用于定位目標(biāo)。然而,對于被定位的每個目標(biāo),參考點(diǎn)的位置應(yīng)考慮該實(shí)例的比例、旋轉(zhuǎn)和轉(zhuǎn)換。你
41、可以在模板上增加多個你所需要的參考點(diǎn)。給模板手動增加特征在模板編輯器中,你可以從outline和detail level不需要用到的輪廓中選擇特征。要在outline level下增加特征,可按下面步驟進(jìn)行:1. 在顯示窗底部點(diǎn)擊outline鍵,這樣就可以在outline level下編輯模板。2. 在 model contents框中點(diǎn)擊features鍵激活特征欄。3. 使show 框中的 grey-scale image check box不被選中,這樣就僅僅顯示輪廓。使綠色的沒用到的輪廓更明顯。4. 在顯示窗中,點(diǎn)擊沒有用到的輪廓之一,以圓長方形舉例。該輪廓變成亮藍(lán)色。5. 在輪廓上
42、點(diǎn)擊一個起始點(diǎn),按住ctrl 鍵并且點(diǎn)擊輪廓上其它的點(diǎn)。則所選的特征顯示成紅色。6. 要改變你的選擇,只需在輪廓上點(diǎn)擊同時按住shift鍵。在model contents框中點(diǎn)擊add 鍵,就會在特征欄中顯示新的特征。7.在欄目中選擇新增加的特征并且點(diǎn)擊delete鍵,就可從模板中刪掉它。8. 要把整個完整的圓長方形作為特征增加進(jìn)去,在顯示窗中雙擊它,這樣整個輪廓被選中。點(diǎn)擊 add 給模板增加該特征。9. 考慮到它對于應(yīng)用程序不穩(wěn)定,因此在欄目中選擇新增加的特征并且點(diǎn)擊delete鍵,從模板中刪掉它。分析模板當(dāng)手動編輯完一個模板,有必要檢驗(yàn)它是否能夠工作正常。在model contents框
43、中點(diǎn)擊analyze model.任何問題都會顯示在messages欄中。保存模板數(shù)據(jù)庫當(dāng)創(chuàng)建完一個模板后,必須把它保存在模板數(shù)據(jù)庫中,否則當(dāng)你離開應(yīng)用程序時,它就會丟失。要保存模板,按以下步驟進(jìn)行。1. 在模板編輯器中,點(diǎn)擊右下方的ok鍵。這就能將新創(chuàng)建的模板轉(zhuǎn)換為定位器的活動模板數(shù)據(jù)庫。2. 在定位器的屬性窗中,選擇model鍵。3. 在database窗中,點(diǎn)擊save as.。在彈出的文件另存對話框中,設(shè)置模板為名hookmodel并將其保存在你的工作目錄下。你會發(fā)現(xiàn)在同一個應(yīng)用程序中把模板文件存儲的靠近其他hexsight文件將會非常便利。例如圖像模仿文件(image emulati
44、on files),程序管理器配置文件(process manager configuration file)等。4. 你可在任何時候通過點(diǎn)擊models框中的edit鍵返回,重新編輯你的模板。配置搜索參數(shù)搜索參數(shù)用來約束目標(biāo)的搜索和識別,以及對定位算法進(jìn)行配置。1. 選擇 search 鍵。2. 使 nominal scale check box被選中。文本欄中的值應(yīng)為 1.0.3. 使 nominal rotation check box不被選中,其范圍為 -180.0 至 180.0.4. 其它所有參數(shù)保留其缺省設(shè)置。執(zhí)行定位器以及檢驗(yàn)結(jié)果創(chuàng)建完模板,而且配置好搜索后,第一步就是檢驗(yàn)定位
45、器在用來創(chuàng)建模板的圖像中找到目標(biāo)。1. 選擇 results 鍵。2. 點(diǎn)擊定位器屬性窗底部的execute。3. 確認(rèn)實(shí)例正確定位。4. 點(diǎn)擊 show results viewer 來觀看添加到灰度圖像上的定位實(shí)例。如圖14所示:5. 將定位器屬性窗和results viewer 移到屏幕一角。圖14:定位器工具的結(jié)果顯示及其面板下一步就是驗(yàn)證目標(biāo)是否已經(jīng)在相應(yīng)的模仿數(shù)據(jù)庫圖像中定位。1. 在程序管理器(process manager)中,打開獲取設(shè)備(acquisition device)屬性窗。選擇configuration面板,然后點(diǎn)擊 enable all 激活模仿數(shù)據(jù)庫中的所有圖
46、像。點(diǎn)擊 ok 關(guān)閉獲取設(shè)備(acquisition device)屬性窗。2. 返回程序管理器點(diǎn)擊 execute sequence.3. 在定位器屬性窗的 results 面板中,檢查實(shí)例是否被正確定位。返回程序管理器(process manager),點(diǎn)擊execute sequence幾次使定位器能應(yīng)用于每一個圖像中。4. 關(guān)閉結(jié)果瀏覽窗,返回定位器屬性窗,點(diǎn)擊 ok.5. 現(xiàn)在可以返回 visual c+ 對話框模板并且保存你的成果。關(guān)閉窗口退出程序管理器(process manager)。如果要返回應(yīng)用程序,你可以右擊 hexsight 圖標(biāo)并選擇hsapplication con
47、trol objectedit.為定位器增加代碼在本節(jié),你將需要增加代碼把定位器所發(fā)現(xiàn)的實(shí)例的屬性輸出到你的應(yīng)用程序界面中。 1.在hookinspectiondlg.cpp:的包含文件之后增加該行:#include hslocator.h2.找到 onbuttoninspect 函數(shù),并且增加如下粗體顯示的語句:note: existing code appears in normal typeface.hsprocessmanager lmanager;hslocator llocator;dword lstarttime;dword lstoptime;minspectbutton.en
48、ablewindow( false );lmanager = mapplicationcontrol.getprocessmanager();llocator = lmanager.getprocess( colevariant( locator ) );該代碼給包含在hexsight應(yīng)用程序控制器(application control)的定位器程序創(chuàng)建了一個參考。該參考將被用作有規(guī)劃的訪問工具。 3.在onbuttoninspect程序內(nèi)現(xiàn)有的 “do” 循環(huán)中,增加以下如黑體所示的語句:dolstarttime = gettickcount();/ execute processes i
49、n the process listlmanager.execute( colevariant( acquisition ),colevariant( locator ) );if ( llocator.getinstancecount() 0 )cstring lbuffer;/ an instance of the object is found/ output the properties of the located instance in/ text boxesmtypetext.setwindowtext(llocator.getinstancemodelname(0) );lbu
50、ffer.format( %.2f,llocator.getinstancescalefactor(0) );mscaletext.setwindowtext( lbuffer );lbuffer.format( %.2f, llocator.getinstancerotation(0);mrotationtext.setwindowtext( lbuffer );lbuffer.format( %.2f,llocator.getinstancetranslationx(0) );mtranslationxtext.setwindowtext( lbuffer );lbuffer.format
51、( %.2f,llocator.getinstancetranslationy(0) );mtranslationytext.setwindowtext( lbuffer );else/ no object is foundmtypetext.setwindowtext( );mscaletext.setwindowtext( );mrotationtext.setwindowtext( );mtranslationxtext.setwindowtext( );mtranslationytext.setwindowtext( );/ compute elapsed timelstoptime
52、= gettickcount();updateelapsedtime( lstarttime, lstoptime );doevents();while( mcontinuouscheck.getcheck() = 1 );循環(huán)每執(zhí)行一次,該代碼就按照從“acquisition”到“l(fā)ocator”的順序執(zhí)行應(yīng)用程序。如果程序管理器(application control)的執(zhí)行方式?jīng)]有指定任何參數(shù),則整個程序執(zhí)行一次,在這個例子中會產(chǎn)生相同的結(jié)果。hexsight 程序執(zhí)行之后,已定位的實(shí)例的造型 (比例,旋轉(zhuǎn)和轉(zhuǎn)換)以及類型(模板名)都會顯示在界面中。4.你必須增加一個 updateela
53、psedtime 私有成員函數(shù),聲明如下:voidchookinspectiondlg:updateelapsedtime(dword const pstart,dword const pstop )dword lelapsed;cstring lbuffer;if ( pstop pstart )lelapsed = (dword)(-1) - pstart + pstop + 1;elselelapsed = pstop - pstart;lbuffer.format( %lu, lelapsed );mtimetext.setwindowtext( lbuffer );該函數(shù)允許給 ge
54、ttickcount 界限設(shè)個旁路,其限制為49.7 天。如果你需要知道在某工業(yè)應(yīng)用中已耗費(fèi)的時間,你必須在gettickcount旁使用別的解決方案。5.這時,你的應(yīng)用程序界面和代碼需要正確嚴(yán)密,如同例子:installationpathtutorialvisualc+hookinspectionpart1. 保存工作,準(zhǔn)備下一步。測試應(yīng)用程序準(zhǔn)備測試你的程序1.按 f5 鍵開始運(yùn)行,點(diǎn)擊 inspect 幾次。每次你按inspect,文本欄中顯示的實(shí)例的屬性都應(yīng)得到更新。2. 使 continuous mode check box被選中,并點(diǎn)擊inspect。 應(yīng)用程序應(yīng)以連續(xù)模式運(yùn)行。使
55、check box不被選中,則退出連續(xù)模式。關(guān)閉窗口或點(diǎn)擊quit來退出運(yùn)行模式。這樣就結(jié)束該部分指南。調(diào)試之后,保存工作并進(jìn)入下一個指南,在下一個指南中你將給應(yīng)用程序增加顯示窗。指南2:顯示(display)簡介第二個指南教你怎樣給你的應(yīng)用程序界面增加顯示窗(display)。你可通過顯示窗(display)查看hexsight應(yīng)用程序顯示的圖像和背景。給界面增加顯示窗(display)首先,你將通過修改你的應(yīng)用程序的界面來增加顯示窗(display)。1. 通過展開對話模板來開始。設(shè)置對話框模板的寬度和高度近似為486、239。重新編制文本欄和按鍵,如圖15所示對話框:圖15:給visual c+對話框重新設(shè)置尺寸2. 右擊對話框并選擇 insert activex control. 在彈出對話框窗口中向下拖動滾動條找到hsdisplay control,選擇并點(diǎn)擊 ok。 hexsight顯示窗便出現(xiàn)在對話框。3.設(shè)置hexsight顯示窗寬度為 253 和高度為 225。 在其屬性中,改變hexsight顯示窗 id 為idc_control_display.圖16:visual c+對話框4. 手動增加 hsdisplay類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025終止停車場租賃合同范本
- 《燒傷的作業(yè)治療》課件
- 《中華文化世紀(jì)盛宴》課件
- 《高效保險(xiǎn)銷售技巧》課件
- 東方山水假日酒店孔子揭幕儀式活動方案
- 呂梁師范高等??茖W(xué)校《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西藏拉薩市那曲二高2025屆高考?xì)v史試題模擬試卷(4)含解析
- 上海出版印刷高等專科學(xué)?!渡试O(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省蘇州市2025年初三調(diào)研測試(二)化學(xué)試題含解析
- 洛陽職業(yè)技術(shù)學(xué)院《軟件系統(tǒng)分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅省2025年甘肅高三月考試卷(四4月)(甘肅二診)(數(shù)學(xué)試題+答案)
- 2025年中小學(xué)教師資格考試的重要試題及答案
- 微訓(xùn)練 一文多考 備考高效之詩歌《蘇幕遮?燎沉香》教師版
- 2025屆山東省濟(jì)南市一模生物試題(原卷版+解析版)
- 海南地理會考試卷及答案2024
- 全國河大音像版初中信息技術(shù)八年級上冊第三章第三節(jié)《循環(huán)結(jié)構(gòu)程序設(shè)計(jì)》教學(xué)設(shè)計(jì)
- 企業(yè)健康管理計(jì)劃規(guī)劃方案討論
- 隧道高空作業(yè)施工方案
- 危險(xiǎn)性較大的分部分項(xiàng)工程專項(xiàng)施工方案嚴(yán)重缺陷清單(試行)
- 深信服超融合HCI技術(shù)白皮書-20230213
- 2025年陜西省土地工程建設(shè)集團(tuán)有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論