編寫一個簡單的HDevelop程序(獲得所有回形針的方向,並在中心位置顯示)
1.首先讀取一張圖片:read_image (Image, 'G:/halcon/imgs/Clip.PNG') Image為輸出的變量名,后一個參數為圖片路徑
2.根據灰度值把回形針分離出來,使用灰度直方圖獲取閾值:threshold (Image, Region, 0, 56) Image為輸入的圖像,Region為輸出的圖像,0,56為閾值
3.connection算子用來計算一個區域中聯通的部分,用不同顏色表示出來:connection(Region,ConnectedRegions)
Region為輸入的圖像,ConnectedRegions為輸出的圖像
4.根據特征選擇區域:select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 475, 595)
5.獲得回形針的方向和重心:
orientation_region(SelectedRegions,Phi)
area_center(SelectedRegions,Area,Row,Column)
算子orientation_region會返回一個元組Phi,數組的每個元素值表示:對象元組SelecetdRegions中對應的每個區域的方向。
算子area_center把每個區域的Area,Row,Column的值以元組的方式返回
6.在循環體中訪問檢測結果:
for Index := 0 to |Phi|-1 by 1
set_tposition(3600,Row[Index],Column[Index])
write_string(3600,deg(Phi[Index])+'degrees')
endfor
算子set_tposition把圖形窗口中的文本光標位置移動至索引Index所對應的區域的中心位置。3600是目標圖形窗口的窗口句柄(每個圖形窗口對應一個窗口句柄)Row[Index]是HDevelop語言的另一個算子,通過它來訪問Tuple元組中的元素。
算子write_string的作用是在圖形窗口的光標位置輸出一個指定字符串。
算子deg也是HDevelop語言的一部分,它的作用是把弧度轉化成角度。
算子+的作用是將兩個字符串合並成一個字符串,在本例中,在兩個操作數+之前,HDevelop會自動進行類型轉換,把deg(Phi[Index])從double轉換成string類型
原圖:
效果圖: