HALCON示例程序clip.hdev曲別針方向識別
示例程序源碼(加注釋)
-
關于顯示類函數解釋
dev_update_window (‘off’) -
讀入圖片
read_image (Clip, ‘clip’) -
獲得圖片尺寸大小
get_image_size (Clip, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width / 2, Height / 2, ‘black’, WindowID)
dev_display (Clip)
set_display_font (WindowID, 14, ‘mono’, ‘true’, ‘false’)
disp_continue_message (WindowID, ‘black’, ‘true’)
stop () -
之前介紹binary_threshold 算子的文章https://blog.csdn.net/cashmood/article/details/92796472
binary_threshold (Clip, Dark, ‘max_separability’, ‘dark’, UsedThreshold) -
分割連通域
connection (Dark, Single) -
通過面積篩選區域,提取出曲別針
select_shape (Single, Selected, ‘area’, ‘and’, 5000, 10000)
dev_set_draw (‘fill’)
dev_set_colored (12)
dev_display (Selected)
disp_continue_message (WindowID, ‘black’, ‘true’)
stop ()
dev_display (Clip)
dev_set_color (‘green’)
dev_display (Selected) -
獲得區域的方向orientation_region (區域, 角度);根據區域中相距最遠的兩個點連成線求角度得出
orientation_region (Selected, Phi) -
區域的坐標面積
area_center (Selected, Area, Row, Column)
dev_set_line_width (3)
dev_set_draw (‘margin’)
Length := 80
for i := 0 to |Phi| - 1 by 1
dev_set_color (‘blue’)- 在窗口顯示箭頭disp_arrow( : : 窗口句柄, 起始行坐標, 起始列坐標, 終止行坐標, 終止行坐標, 尺寸: )
disp_arrow (WindowID, Row[i], Column[i], Row[i] - Length * sin(Phi[i]), Column[i] + Length * cos(Phi[i]), 4)
disp_message (WindowID, deg(Phi[i])$‘3.1f’ + ’ deg’, ‘image’, Row[i], Column[i] - 100, ‘black’, ‘false’)
endfor
dev_update_window (‘on’)
- 在窗口顯示箭頭disp_arrow( : : 窗口句柄, 起始行坐標, 起始列坐標, 終止行坐標, 終止行坐標, 尺寸: )
處理思路
這個例子的思路非常簡單,binary_threshold二值化求取出曲別針,利用曲別針的面積進行區域篩選 。利用orientation_region 算子求取曲別針的方向 。
后記
大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。