Halcon视觉之家-Halcon视觉技术论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1431|回复: 5

[待解决] 怎么在这幅图片上把已经有的圆抠出来

[复制链接]

该用户从未签到

8

主题

31

帖子

64

积分

Rank: 1

积分
64
发表于 2021-10-28 14:56:11 | 显示全部楼层 |阅读模式

51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

您需要 登录 才可以下载或查看,没有账号?会员注册

x
怎么在这幅图片上把已经有的圆抠出来,然后不要背景,然后再判断这些圆里面有十字痕迹的保留,没有的去掉,因为要判断是不是钉子

1.jpg

签到天数: 37 天

连续签到: 6 天

[LV.5]常住居民I

444

主题

1864

帖子

8355

积分

Rank: 9

积分
8355

突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

发表于 2021-10-28 17:38:04 | 显示全部楼层
缩小定义域 reduce_domain,之后就可以单独每个独立阈值找螺丝十字!
无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系

该用户从未签到

8

主题

31

帖子

64

积分

Rank: 1

积分
64
 楼主| 发表于 2021-10-28 20:17:15 | 显示全部楼层
上图这些圆都是object, 怎么转换成region, 因为 reduce_domain需要对region进行操作

签到天数: 37 天

连续签到: 6 天

[LV.5]常住居民I

444

主题

1864

帖子

8355

积分

Rank: 9

积分
8355

突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

发表于 2021-10-29 16:16:06 | 显示全部楼层
youyiyang 发表于 2021-10-28 20:17
上图这些圆都是object, 怎么转换成region, 因为 reduce_domain需要对region进行操作

你怎么提取出来的呢?阈值找到的出来就是区域region,其他找到的,就自己转换吧。比如:轮廓转区域 gen_region_contour_xld
无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系

该用户从未签到

8

主题

31

帖子

64

积分

Rank: 1

积分
64
 楼主| 发表于 2021-11-1 18:22:09 | 显示全部楼层
圆里面的十字怎么判断?

该用户从未签到

8

主题

31

帖子

64

积分

Rank: 1

积分
64
 楼主| 发表于 2021-11-1 21:50:42 | 显示全部楼层
[mw_shl_code=text,true]* 识别区域

*scale_image(Image,Invert,minGray,maxGray)
gen_rectangle1 (Rectangle, startY, startX, endY, endX)
reduce_domain (Image, Rectangle, ImageReduced)
* 初步边缘提取
edges_image (ImageReduced, ImaAmp, ImaDir, 'lanser2', 0.9, 'nms', 8, 16)
threshold (ImaAmp, Region1, 1, 255)
connection (Region1, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['outer_radius','anisometry','area'], 'and', [10,1,50], [30,3.9,300])
shape_trans (SelectedRegions, RegionTrans, 'outer_circle')
dilation_circle (RegionTrans, RegionDilation,5.5)
union1 (RegionDilation, RegionUnion)
reduce_domain (Image, RegionUnion, ImageReduced2)
* 详细边缘提取
edges_sub_pix (ImageReduced2, Edges, 'lanser2', 0.1, 8, 16)
select_shape_xld (Edges, SelectedXLD, ['contlength','outer_radius','circularity'], 'and', [40,10,0.5], [99999,99999,1])

*segment_contours_xld (SelectedXLD, ContoursSplit, 'lines_circles', 4, 2, 2)
gen_region_contour_xld(SelectedXLD, SelectedRegion_ContoursSplit,'filled')
union1 (SelectedRegion_ContoursSplit, RegionUnion_new)
reduce_domain( Image,RegionUnion_new, ImageReduced_RegionUnion_new)
threshold(ImageReduced_RegionUnion_new, Region2, 1, 255)
connection (Region2, ConnectedRegions2)

* 筛选
count_obj (ConnectedRegions2, NumberContours)
*gen_empty_obj (Circles)
for i := 1 to NumberContours by 1
    select_obj (ConnectedRegions2, ObjectSelected, i)
    gen_region_contour_xld(ObjectSelected, Object123, 'filled')
    *dev_display (ObjectSelected)
    reduce_domain(Image, Object123, Image_Object_Reduced)
    *get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib)
    *if (Attrib == 1)
    *    concat_obj (Circles, ObjectSelected, Circles)
    *endif
endfor[/mw_shl_code]
现在能够把钉子和类似钉子的圆形取出来,而且可以循环检查,但是gen_region_contour_xld(ObjectSelected, Object123, 'filled')和 reduce_domain(Image, Object123, Image_Object_Reduced)因为ObjectSelected不是region所以不行
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

视觉培训招生

建议您使用Chrome、Firefox、Edge、360、IE10以上等主流浏览器浏览本论坛

算子查询| 申请友链| 小黑屋| 手机版| Archiver| 业务支持|

© 2015-2021 Halcon视觉之家  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

本站已安全运行:

快速回复 返回顶部 返回列表