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 算子求取曲别针的方向 。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。