本例是识别夹子的一个例程,要求识别出红色(粉红)色夹子,并找出其开口方向
原图如下,可以看到图像两侧是有灰边的,左下和右上:
处理后的结果如下:箭头指出了开口方向,箭头的起点即为夹子的中心处,白色数字标明了夹子开口的朝向角度
下面是用到的工具:
灰度直方图用来设置二值化的阈值
特征直方图用来选择兴趣区域
orientation_region算子用来求出夹子的方向数据
area_center算子求出夹子的中心点坐标
disp_arrow画出朝向箭头
disp_message显示出角度值
完整代码:
read_image (Image, 'clip001.jpg')
dev_set_color('red')
threshold (Image, Bin, 124, 255) * 二值化
connection(Bin, Single) * 连接域
select_shape (Single, SelectedRegions, 'area', 'or', 15000, 35000) * 筛选出夹子的区域
dev_close_window()
dev_open_window (0, 0, 1000, 1000, 'black', WindowHandle)
dev_display (SelectedRegions)
orientation_region (SelectedRegions, Phi) * 求出夹子的方向数据
area_center (SelectedRegions, Area, Row, Column) * 求出夹子的中心点坐标
Length := 120 * 箭头长度
dev_set_color('green')
dev_set_line_width (3)
set_display_font (WindowHandle, 24, 'mono', 'true', 'false')
disp_arrow (WindowHandle, Row, Column, Row + Length * sin(Phi), Column - Length * cos(Phi), 4)
disp_message (WindowHandle, (deg(Phi)+180)$'3.2f' + ' deg', 'image', Row, Column - 100, 'white', 'false')