Halcon 通用流程
------------------------------------------------------------------
【第1步】初始化 + 读图
dev_close_window ()
read_image (Image, '图片路径')
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
-------------------------------------------------------------------
【第2步】预处理(转灰度+去噪)
rgb1_to_gray (Image, GrayImage) * 彩色转灰度
median_image (GrayImage, ImageMedian, 'circle', 3, 'mirrored') * 去噪
--------------------------------------------------------------------
【第3步】二值化(把目标抠出来)
binary_threshold (ImageMedian, Region, 'max_separability', 'dark', UsedThreshold)
--------------------------------------------------------------------
【第4步】拆成一个个目标
connection (Region, ConnectedRegions)
--------------------------------------------------------------------
【第5步】筛选目标
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 100, 99999)
--------------------------------------------------------------------
【第6步】修图(修修补补,填洞去毛刺)
closing_circle (SelectedRegions, RegionClosing, 3.5) * 填洞
fill_up (RegionClosing, RegionFinal) * 彻底实心
---------------------------------------------------------------------
【第7步】测距(找圆,算面积)
distance_pp (Row1,Col1, Row2,Col2, Distance) *测两点
measure_pairs (Image, MeasureHandle, 1, 20, 'all', 'all', RowEdge, ColEdge, Amp, Distance) *测两边
distance_pl (Row,Col, Row1,Col1,Row2,Col2, Distance) *测点到直线
smallest_circle (RegionFinal, Row, Column, Radius) *测圆直径
----------------------------------------------------------------------
【第8步】标记(画圆,写字儿)
dev_display (Image)
dev_set_color ('green')
disp_circle (WindowHandle, Row, Column, Radius) *标记green圆圈
set_display_font (WindowHandle, 24, 'mono', 'true', 'false')
disp_message (WindowHandle, '直径:' + Diameter, 'image', 30, 30, 'red', 'true') *标记red文字
==================================================================================

计算出图中两个残缺圆的圆心距:


浙公网安备 33010602011771号