Halcon计算一个区域的最大内接圆
该算子用于计算一个区域的最大内接圆,其原型如下:
inner_circle(Regions : :: Row, Column, Radius)
参数1:Regions 表示输入的区域。
参数2和3:Row、Column为输出参数,表示最大内接圆的圆心坐标。
参数4:Radius 为输出参数,表示最大内接圆的半径。
以几个简单图形为例,求各自的最大内接圆。这里使用inner_circle算子,将输入图像区域的
最大内接圆的中心和半径计算了出来,并在窗口中进行了绘制。效果如图所示。
实现代码如下:
dev_close_window ()
*读取图像
read_image (Image, 'data/crossShape')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowID)
rgbl_to_gray (Image, GrayImage)
*创建矩形选区,选择感兴趣区域
gen_rectanglel (Rectangle, 100, 127, 325, 490)
reduce_domain (GrayImage, Rectangle, ROI)
*进行阈值处理,提取出图中较暗的包含孔洞的区域
threshold (ROI, Regions, 50, 255)
*将不连通的部分独立分割出来,成为一组区域
connection (Regions, ConnectedRegions)
select_shape_std (ConnectedRegions, SelectedRegion3, 'max_area',70)
dev_set_draw ('fill')
*求出3个区域的最大内接圆的中心和半径
inner_circle (SelectedRegion3, Row, Column,Radius)
*绘制圆形
gen_circle(Circles,Row,Column,Radius)
dev_set_window (WindowID)
*绘制形状的边缘
dev_set_draw ('margin')
dev_set_line_width (3)
*显示内接圆形
dev_display (Image)
dev_display (Circles)
上述代码实现了提取图中较暗的区域,并绘制出了各区域的最大内接圆形。