前言
本文对复杂的背景取小圆及其坐标位置
一、原图
本次检测的位置如图:
二、实现思路
本次实验主要使用区域面积进行获取,因此思路都比较简单。
使用阈值,面积选择,然后得到region,在进行获得xld,之后再xld中进行拟合圆,得到圆心和半径。然后绘制圆形
三、halcon完整脚本实现
脚本解析都在代码里边可进行查看
dev_close_window()
dev_open_window(0, 0, 640, 480, 'black', WindowHandle)
for i := 1 to 7 by 1
read_image(Image, i+'.bmp')
threshold(Image, Region, 0, 65)
* 去除噪点
opening_circle(Region, RegionOpening, 10)
* 找螺丝孔中间小黑圆位置
connection(RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 1550)
gen_contour_region_xld(SelectedRegions, Contours, 'border')
fit_circle_contour_xld(Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius, StartPhi, EndPhi, PointOrder)
gen_circle(Circle, Row1, Column1, Radius)
dev_display(Image)
dev_display(Circle)
area_center(SelectedRegions, Area, Row, Column)
for Index := 0 to |Area|-1 by 1
row:= Row[Index]
col:= Column[Index]
disp_message(WindowHandle, Index +1+':'+'Row='+Row[Index]+'_Col='+Column[Index], 'image', Row[Index]+50,Column[Index]-200, 'black', 'true')
endfor
stop()
endfor
四、效果展示