halcon通过点拟合圆形,鼠标选点

原图

在这里插入图片描述

源码

read_image (Image, '0.bmp')
dev_clear_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)


binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 100, 100000)


gen_empty_obj (CircleRegion)
PointNumber:=0
while (PointNumber<8)
    draw_point (WindowHandle, Row, Column)
    gen_region_points (Region1, Row, Column)
    select_shape_proto (SelectedRegions, Region1, SelectedRegions1, 'overlaps_abs', 1, 5)
    count_obj (SelectedRegions1, Number)
    if(Number>0)
        concat_obj (CircleRegion, SelectedRegions1, CircleRegion)
        PointNumber:=PointNumber+1
    endif   
endwhile

smallest_circle (CircleRegion, Row1, Column1, Radius)


pts_to_best_circle (Circle, Row1, Column1, RowCenter, ColCenter, Radius)
 

dev_display (Image)

dev_display (Circle)

pts_to_best_circle 函数

在这里插入图片描述

RowCenter := 0
ColCenter := 0
Radius := 0

gen_empty_obj (Circle)
tuple_length(Cols, Length)

if (Length>2)
    
    gen_contour_polygon_xld(Contour, Rows, Cols)
    fit_circle_contour_xld (Contour, 'geotukey', -1, 0, 0, 3, 2, RowCenter, ColCenter, Radius, StartPhi, EndPhi, PointOrder)
    
    tuple_length(StartPhi, Length1)
    if(Length1<1)
        return()
    endif
    gen_circle_contour_xld(Circle, RowCenter, ColCenter, Radius, StartPhi, EndPhi, PointOrder, 1)
    
endif
return ()

处理结果

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值