相关概念:
region:region是一个图像的点集的集合,没有灰度值。类似于二值图像。它的大小不受图像大小的限制。
这个官方例子是用来检测回形针的方向:
* clip.hdev: Orientation of clips
*
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 (Clip, Dark, 'max_separability', 'dark', UsedThreshold) * 二值化阈值
connection (Dark, Single) * 将连通域分开
select_shape (Single, Selected, 'area', 'and', 5000, 10000) *筛选出面积在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 (Selected, Phi) *这个算子作用是得到和输入区域具有相同方向(same orientation)、同侧关系(same side relation)的椭圆。
area_center (Selected, Area, Row, Column) *用于获取图形的面积和中心
dev_set_line_width (3) *定义region,contour输出的线宽。
dev_set_draw ('margin') *设置填充的方式,内部填充,边缘填充,缺省填充
Length := 80 *遍历显示箭头的方向
for Index := 1 to |Phi| by 1
dev_set_color ('blue')
disp_arrow (WindowID, Row, Column, Row - Length * sin(Phi), Column + Length * cos(Phi), 4)
disp_message (WindowID, deg(Phi)$'3.1f' + ' deg', 'image', Row, Column - 100, 'black', 'false')
endfor
dev_update_window ('on')