齿轮测量,毛刺检测

直接使用distance_pr计算圆心到每个齿轮区域的距离,精度会差一点,如果项目要求精度高,可以使用测量钻头中使用到的pake来测量,角度为区域中心点到圆心点的角度

 

 

list_files ('F:/测量/齿轮测量', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])

*内圆
threshold (Image, Regions1, 220, 255)

connection (Regions1, Connection1)
select_shape (Connection1, SelectedRegions2, 'area', 'and', 10383.4, 53514.4)//面积
select_shape (SelectedRegions2, SelectedRegions1, 'circularity', 'and', 0.95, 1)//圆度
fill_up (SelectedRegions1, RegionFillUp1)//填充
smallest_circle (RegionFillUp1, Row1, Column1, Radius1)//获取最小外接圆的信息
neiyuanzhijing:=Radius1*2//内圆直径

*毛刺
gen_circle (Circle1, Row1, Column1, Radius1-2)//根据最小外接圆生成区域
difference (Circle1, RegionFillUp1, RegionDifference1)//外接圆减原区域
connection (RegionDifference1, ConnectedRegions1)//分割
select_shape (ConnectedRegions1, SelectedRegions3, 'area', 'and', 3, 99999)//筛选
count_obj (SelectedRegions3, Number1)//毛刺个数

*齿轮
dev_display (Image)
threshold (Image, Regions, 29, 137)
connection (Regions, Connection)
select_shape (Connection, SelectedRegions, 'area', 'and', 60068, 100000)//面积
select_shape (SelectedRegions, SelectedRegions1, 'circularity', 'and', 0.68182, 1)//圆度
smallest_circle (SelectedRegions1, Row, Column, Radius)//最小外接圆
gen_circle (Circle, Row, Column, Radius)//生成区域
erosion_circle (Circle, RegionErosion,11)//腐蚀
difference (SelectedRegions1, RegionErosion, RegionDifference)//相减获得要测量的区域
connection (RegionDifference, ConnectedRegions)//分割
count_obj (ConnectedRegions, Number)//获取元组对象个数
zhijing:=[]//直径组
pingjun:=0

for I :=1 to Number  by 1//单独对每个对象进行测量
select_obj (ConnectedRegions, ObjectSelected,I )//读取第i个元素
distance_pr (ObjectSelected,  Row1, Column1, DistanceMin, DistanceMax)   //点到区域的距离

zhijing:= [zhijing,DistanceMax]
pingjun:=pingjun+DistanceMax//写入
endfor

pingjunzhijing:=pingjun/Number//平均值
tuple_max (zhijing, zhijinMax)//获取最大值
tuple_min (zhijing, zhijinMin)//获取最小值


dev_display (Image)
dev_display (SelectedRegions3)
dev_get_window (WindowHandle)

disp_message (WindowHandle, '毛刺数量为:'+Number1, 'image', 10, 10, 'black', 'false')
disp_message (WindowHandle, '平均直径为:'+pingjunzhijing, 'image', 50, 10, 'black', 'false')
disp_message (WindowHandle, '最小直径为:'+zhijinMin, 'image', 90, 10, 'black', 'false')
disp_message (WindowHandle, '最大直径为:'+zhijinMax, 'image', 130, 10, 'black', 'false')
stop ()
endfor

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值