Halcon圆形测量工具详解:从图像读取到结果可视化
创作时间:
作者:
@小白创作中心
Halcon圆形测量工具详解:从图像读取到结果可视化
引用
1
来源
1.
https://www.bilibili.com/opus/997307215941468200
本文将详细介绍如何使用Halcon软件进行圆形测量。通过读取图像、阈值分割、区域转换、设置测量模式、实际测量以及结果可视化等多个步骤,帮助读者掌握这一重要功能。
最近接到了一个关于带洞圆环测量的需求,需要检测圆环洞口的宽度。虽然Halcon自带的助手可以直接实现这一功能,但为了帮助大家更好地理解,我将通过自定义代码来完成这一任务。
一、读取图像
首先,我们需要读取待处理的图像。假设图像存储在本地路径E:/boke/1.png。
read_image (Image, 'E:/boke/1.png')
get_image_size (Image, Width, Height)
二、阈值分割提取洞口区域
为了准确测量洞口的宽度,我们先提取外轮廓,再提取洞口区域。
binary_threshold (Image, Region_All, 'max_separability', 'light', UsedThreshold)
connection (Region_All, Region_Base)
三、将洞口区域转换为二值图像
将提取到的区域转换为二值图像,便于后续测量。
smallest_circle (Region_Base, Row_Base, Column_Base, Radius_Base)
fill_up (Region_Base, Region_Base_Fill)
difference (Region_Base_Fill, Region_Base, Region_Holes)
connection (Region_Holes, Region_Holes)
select_shape (Region_Holes, Region_Holes, 'area', 'and', 3000, 5000)
union1 (Region_Holes, Region_Holes)
region_to_bin (Region_Holes, BinImage, 255, 0, Width, Height)
四、设置测量模式和基本参数
测量模式分为两种:测量洞口宽度(A)和测量相邻两个洞口的宽度(B)。
IsChooseBackGround:=true
五、测量
1. 生成可视化检测圆形
set_system ('int_zooming', 'true')
draw_circle (200000, MeasureC_R, MeasureC_C, MeasureC_Radius)
2. 生成检测圆并输出工具句柄
MeasureC_R := 550.79
MeasureC_C := 697.792
MeasureC_Radius := 422.744
gen_circle (Region_MeasureC, MeasureC_R, MeasureC_C, MeasureC_Radius)
gen_contour_region_xld (Region_MeasureC, Region_MeasureC, 'border')
gen_region_contour_xld (Region_MeasureC, Region_MeasureC, 'margin')
gen_measure_arc (MeasureC_R, MeasureC_C, MeasureC_Radius, rad(0), rad(360), max2(1, min2(56.5, MeasureC_Radius)), 1280, 1024, 'nearest_neighbor', MsrHandle)
3. 测量获得数据
measure_pairs (BinImage, MsrHandle, 1, 36, 'positive', 'all', Row1_Measure_01_0, Column1_Measure_01_0, Amplitude1_Measure_01_0, Row2_Measure_01_0, Column2_Measure_01_0, Amplitude2_Measure_01_0, Width_Measure_01_0, Distance_Measure_01_0)
close_measure (MsrHandle)
gen_cross_contour_xld (Cross_SP, Row1_Measure_01_0, Column1_Measure_01_0, 20, 0.785398)
gen_cross_contour_xld (Cross_EP, Row2_Measure_01_0, Column2_Measure_01_0, 20, 0.785398)
if(IsChooseBackGround)
intersection (Region_Holes, Region_MeasureC, Region_LineShow)
Res:=Width_Measure_01_0
else
difference (Region_MeasureC, Region_Holes, Region_LineShow)
Res:=Distance_Measure_01_0
endif
4. 可视化和数据计算显示
OutModel:=2
if(OutModel==1)
tuple_mean (Res, Result)
message:='平均距离'
elseif(OutModel==2)
tuple_min (Res, Result)
message:='最大距离'
elseif(OutModel==3)
tuple_max (Res, Result)
message:='最小距离'
endif
dev_clear_window ()
dev_set_line_width (2)
dev_display (Image)
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Cross_SP)
dev_set_color ('green')
dev_display (Cross_EP)
dev_set_color ('blue')
dev_display (Region_LineShow)
dev_set_color ('red')
disp_message (200000, message+':'+Result, 'image', 10, 10, 'green', 'false')
六、最终显示效果
通过上述步骤,我们可以得到准确的测量结果,并在图像上直观地显示出来。
热门推荐
反文旁包含的字有哪些?
为什么股市会出现高开现象?高开对市场有哪些影响?
朱元璋诛杀功臣背后的复杂考量
朱元璋为何诛杀众多功臣?“胡惟庸案”与“蓝玉案”背后的权力博弈
早晨头晕恶心是怎么回事
草鱼、鲢鱼、鳙鱼…常见淡水鱼的营养价值如何?
体检前饮食注意事项:空腹时间及饮食禁忌
摩托车交强险提前多久买?一文详解购买时间、所需资料及渠道
后唐皇位于后主李煜的爱情与事业有何作用?
李煜:才华横溢的南唐后主
氨基丁酸有助于孩子长个吗?
日月光/Qorvo/力成等纷纷“出走”,大陆还剩多少外资封测厂?
先导科技成为万业企业战略新实控人,赋能半导体产业发展
临床医学属于理工类吗?答案令人意外
健腹轮可以减肚子吗?全方位解析健腹轮的使用效果
和模线孤影玩具评测:忍者风格的精良设计与出色可动性
泡茶的艺术:从静心到社交,一杯茶里的多重智慧
口腔科医生:刷牙不刷舌苔,可能引发口臭
口臭怎么办?从舌苔清洁到饮食调整的全方位解决方案
古代诗句与语文素养的提升
复旦大学推出直博招生新政:QS前100本科毕业生可直接攻读博士学位
沪铅期货市场中代表什么?这种代表意义对价格有哪些影响?
化州属于哪个省
颈动脉狭窄小知识
颈动脉狭窄该如何进行检查
突发降息!南京房贷利率最低2.95%,不调了?
51单片机基础篇系列-51单片机基础开发流程和基本I/O口
手要撐著,腰才不痛嗎?
女子身份证丢失后被冒名结婚6次,检察机关介入后终获解决
冒用他人身份登记结婚如何处理