haocon找圆_Halcon找圆系列(3)找金属表面的圆孔

本文介绍了使用Halcon进行金属表面圆孔识别与定位的方法,包括图像处理步骤如彩色转灰度、动态二值化、找圆等,并展示了源码实现。通过动态阈值处理和形状选择,成功找出圆孔并计算其半径和中心点。
摘要由CSDN通过智能技术生成

我在Halcon学习网发了一个帖子:

请教工件的金属表面圆孔的识别与定位

解决方案有了,源码如下:

dev_update_off ()

dev_close_window ()

*读图像

read_image (Image, 'D:/pic/202006042055044969.jpg')

*彩色转灰度图

count_channels (Image, Channels)

if (Channels == 3)

rgb1_to_gray (Image, Image)

*真彩色转灰度图

elseif (Channels == 4)

decompose4 (Image, ImageR, ImageG, ImageB, ImageA)

compose3 (ImageR, ImageG, ImageB, MultiChannelImage)

rgb1_to_gray (MultiChannelImage, Image)

endif

*获取图像宽高

get_image_size (Image, Width, Height)

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

set_display_font (WindowHandle, 16, 'mono', 'true', 'false')

dev_display (Image)

*动态二值化

D := 30

mean_image(Image, Mean, D*2+1, D*2+1)

dyn_threshold(Image, Mean, Seg, 5, 'dark')

fill_up(Seg, SegFillUp)

connection(SegFillUp, segConnect)

*找圆

select_shape(segConnect, SelectedRegions, ['area','circularity'], 'and', [500, 0.7], [20000, 1])

*求出最小外接圆的半径和中心点

smallest_circle(SelectedRegions, Row, Column, Radius)

*求出圆的面积和中心点

area_center(SelectedRegions, Area, Row1, Column1)

*画圆

dev_display(Image)

gen_circle(Circles, Row, Column, Radius)

dev_display(Circles)

*数量统计

count_obj(SelectedRegions, Number)

if (Number < 1)

disp_message (WindowHandle, '未找到', 'window', 12, 12, 'black', 'true')

return()

endif

*结果显示

for i:=1 to Number by 1

select_obj (SelectedRegions, ObjectSelected, i)

r := Row[i - 1]

c := Column[i - 1]

rds:= Radius[i - 1]

disp_message (WindowHandle, '圆心:Row:'+ r + ' Col:' + c, 'window', 12, 12, 'black', 'true')

disp_message (WindowHandle, '半径:'+ rds, 'window', 52, 12, 'black', 'true')

endfor

stop()

---

参考官方例程

smallest_circle.hdev

measure_ring.hdev

dyn_threshold.hdev

ball.hdev

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值