halcon检测圆形、部分残缺圆

代码中关键知识:

1、循环读取图片

2、基本图像处理:开运算、二值化、内部填充、

3、获取图像边缘线,分割曲线,然后计算曲线的circularity_xld圆率范围,和area_center_xld的面积大小,做阈值筛选

4、然后fit_circle_contour_xld 拟合,确定圆形的半径大小,然后对半径进行阈值筛选

图片数据下载:https://download.csdn.net/download/zzx2016zzx/88809987

dev_close_window()
dev_clear_window()
dev_open_window (0, 0, 646, 492, 'black', WindowHandle)
list_image_files ('/image', 'default', [], ImageFiles)
for Index := 0 to |ImageFiles|-1 by 1
    read_image (Image, ImageFiles[Index])
    get_image_size (Image, Width, Height)
    count_channels (Image, Channels)
    if(Channels==3)
        rgb1_to_gray (Image, GrayImage)
    else
        copy_image (Image, GrayImage)
    endif
    threshold (GrayImage, Regions, 119, 255)
    connection (Regions, ConnectedRegions)
    fill_up (ConnectedRegions, RegionFillUp)
    select_shape (RegionFillUp, SelectedRegions, ['area','circularity'], 'and', [4000,0.24], [23000,1])
    opening_circle (SelectedRegions, RegionOpening, 3.5)
    gen_contour_region_xld (RegionOpening, Contours, 'border')
    segment_contours_xld (Contours, ContoursSplit, 'lines_circles', 10, 4, 10)
    count_obj (ContoursSplit, Number)
    for i:=1 to Number by 1
        select_obj (ContoursSplit, ObjectSelected, i)
        area_center_xld (ObjectSelected, Area, Row, Column, PointOrder)
        circularity_xld (ObjectSelected, Circularity)
        if(Area>3400 and Circularity>0.22)
           fit_circle_contour_xld (ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius, StartPhi, EndPhi, PointOrder1)
           if(Radius>80)
               gen_circle (Circle, Row1, Column1, Radius)
               dev_display (Image)
               dev_display(Circle)       
               break
           endif
        endif
    endfor
    stop()
endfor

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好玩的Matlab(NCEPU)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值