標籤:style blog color strong width os
* 此常式來自halcon內建常式,請開啟 halcon-》ctrl+E 開啟常式-》搜尋方塊中輸入ball added by xiejl
* ball.hdev: Inspection of Ball Bonding* dev_update_window (‘off‘)dev_close_window ()dev_open_window (0, 0, 728, 512, ‘black‘, WindowID)read_image (Bond, ‘die/die_03‘)dev_display (Bond)set_display_font (WindowID, 14, ‘mono‘, ‘true‘, ‘false‘)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()threshold (Bond, Bright, 100, 255)shape_trans (Bright, Die, ‘rectangle2‘)dev_set_color (‘green‘)dev_set_line_width (3)dev_set_draw (‘margin‘)dev_display (Die)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()reduce_domain (Bond, Die, DieGrey)threshold (DieGrey, Wires, 0, 50)fill_up_shape (Wires, WiresFilled, ‘area‘, 1, 100)dev_display (Bond)dev_set_draw (‘fill‘)dev_set_color (‘red‘)dev_display (WiresFilled)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()opening_circle (WiresFilled, Balls, 15.5)dev_set_color (‘green‘)dev_display (Balls)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()connection (Balls, SingleBalls)select_shape (SingleBalls, IntermediateBalls, ‘circularity‘, ‘and‘, 0.85, 1.0)sort_region (IntermediateBalls, FinalBalls, ‘first_point‘, ‘true‘, ‘column‘)dev_display (Bond)dev_set_colored (12)dev_display (FinalBalls)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()smallest_circle (FinalBalls, Row, Column, Radius)NumBalls := |Radius|Diameter := 2*RadiusmeanDiameter := sum(Diameter)/NumBallsmimDiameter := min(Diameter)dev_display (Bond)disp_circle (WindowID, Row, Column, Radius)dev_set_color (‘white‘)for i := 1 to NumBalls by 1 if (fmod(i,2)=1) disp_message (WindowID, ‘D: ‘+Diameter[i-1], ‘image‘, Row[i-1]-2.7*Radius[i-1], max([Column[i-1]-60,0]), ‘white‘, ‘false‘) else disp_message (WindowID, ‘D: ‘+Diameter[i-1], ‘image‘, Row[i-1]+1.2*Radius[i-1], max([Column[i-1]-60,0]), ‘white‘, ‘false‘) endifendfor* dump_window (WindowID, ‘tiff_rgb‘, ‘./ball‘)dev_set_color (‘green‘)dev_update_window (‘on‘)disp_continue_message (WindowID, ‘black‘, ‘true‘)stop ()dev_close_window ()
可以看到 映像的處理就是紅色之外的代碼,沒有幾句。
先來看看紅色部分的代碼:
dev_update_window:協助文檔上是這麼說的---此運算元決定 所有由其他某一個運算元返回的所有繪圖物件是否顯示在活動的圖形視窗之上(‘on‘為預設參數,代表開啟此更新,‘off‘表示關閉此更新,所有更新由我們手動開啟)。參數的選擇對於我們輸出對象在某一逐步執行時是沒有影響的,執行之後,圖形輸出對象依然可以顯示在活動的圖形視窗之上。參數選擇應該被置為‘off‘,只有在我們選擇的繪圖物件應該被顯示在圖形視窗之上時,我們應該手動調用運算元:dev_display運算元顯示此對象(包括 image, xld, region等其他繪圖物件)。理解了嗎?呵呵
dev_close_window:這是halcon中比較簡單的內建函式,就是將圖形顯示視窗關閉。當然我們可以通過HDevelop的功能表列-》視窗-》開啟圖形視窗,開啟多個圖形視窗。
dev_open_window:這沒什麼好說的,就是將上面關閉的圖形視窗重新開啟。
dev_display:如果我們通過調用dev_update_window(’off‘)語句,關閉視窗的更新,我們必須手動調用dev_display()內部操作來顯示對象(比如imag,region,xld等其他繪圖物件)。
stop: 這是應該是halcon中最簡單的語句了,相當於C中的system("pause"),讓程式暫停執行,此時我們可以通過觀察變數視窗(顯示圖形變數及控制變數),偵錯工具等。
dev_set_color: 在講這句的意義之前,我們可以通過HDevelop的功能表列-》可視化-》顏色 來達到與此句相同的效果,這可能會協助你理解dev_set_color的意義,其實就是設定圖形顯示視窗中圖形(image,region,xld等)的映像顯示顏色。此內部操作和下面講到的dev_set_colored相輔相成。調試非常有用。
dev_set_colored:和上面一樣,我們可以通過HDevelop的功能表列-》可視化-》彩色數量 來達到與此句相同的效果。在我們偵錯工具時,通過connection運算元處理後,求取region的連通域,將region分成各不同的region塊,即可以通過此功能完成對各region著不同的顏色,方便我們調試、觀察。
dev_set_line_width:和上面一樣,可以通過HDevelop的功能表列-》可視化-》線寬來設定線條的寬度,調試用,比如觀察xld時。
dev_continue_message:在圖形視窗上顯示繼續資訊
Halcon的內部操作暫時講這麼多。至於運算元和外部函數稍的再講 by xiejl