【halcon】轮廓拟合相关函数
创始人
2024-06-01 06:46:54
0

涉及函数

edges_sub_pix

寻找边缘

edges_sub_pix (Image, Edges, 'canny', 1, 10, 20)

后面三个参数,越小,找到的细节越多。这个是对应录波器为'canny'时。

'canny'滤波器用的最多。

segment_contours_xld

将连续的轮廓进行分段,按圆弧或者执行分段
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 3)

经过这个函数之后,就不会存在直线和圆弧的其他种类的线条。比如折线就不存在了!

折线会被打断成两条直线。

select_contours_xld

对轮廓的某个特征进行筛选:

select_contours_xld (ContoursSplit, SelectedContours, 'contour_length', 120, 300000, -0.5, 0.5)

union_adjacent_contours_xld

将相近的轮廓合并成一个轮廓。
union_adjacent_contours_xld (SelectedContours, UnionContours, 100, 1, 'attr_keep')

参数中的100表示只要距离相近100以内就连起来。

fit_circle_contour_xld

将轮廓拟合成圆弧
fit_circle_contour_xld (ObjectSelected, 'ahuber', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

前面的参数基本都使用默认即可,后面的: Row, Column, Radius, StartPhi, EndPhi, PointOrder,均为输出参数。

利用输出的 Row, Column, Radius,可以根据圆弧生成完整的圆轮廓:

gen_circle_contour_xld (ContCircle, row, column, radius, 0, rad(360), 'positive', 1.0)

circularity_xld

可获取轮廓的圆度:

circularity_xld(ObjectSelected, Circularity)

length_xld

可获取轮廓的长度
length_xld (ObjectSelected, Length)

get_contour_global_attrib_xld

get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib)
但是这个函数使用时要注意,所有的轮廓必须先 使用 segment_contours_xld 进行分段。

比如如果有个折线,调用 get_contour_global_attrib_xld 就会报错!Contour attribute not defined

这是因为折线不属于圆弧椭圆弧以及直线。

特别是使用了 union_adjacent_contours_xld  之后注意一定要 使用 segment_contours_xld  进行打断,然后才能使用 get_contour_global_attrib_xld。

结果展示

使用以上函数就能将圆识别到

 

dev_close_window()
dev_update_off ()
read_image (Image, 'D:/视觉图片资料/13.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
edges_sub_pix (Image, Edges, 'canny', 1, 10, 20)
*将连续的轮廓进行分段,按圆弧或者执行分段
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 3)
select_contours_xld (ContoursSplit, SelectedContours, 'contour_length', 120, 300000, -0.5, 0.5)*合并较近的轮廓
union_adjacent_contours_xld (SelectedContours, UnionContours, 100, 1, 'attr_keep')
segment_contours_xld (UnionContours, ContoursSplit, 'lines_circles', 5, 4, 3)
count_obj (ContoursSplit, Number)
dev_display (Image)
dev_set_draw ('margin')
dev_set_color ('white')
dev_update_window ('off')length := 0
select := 0
row:= 0 
column:= 0 
radius:= 0
gen_empty_obj (EmptyObject)
for I := 1 to Number by 1select_obj (ContoursSplit, ObjectSelected, I)get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib)* 该值如果大于0,说明为圆弧。if (Attrib > 0) concat_obj (ObjectSelected,EmptyObject , EmptyObject)fit_circle_contour_xld (ObjectSelected, 'ahuber', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)*circularity_xld(ObjectSelected, Circularity)length_xld (ObjectSelected, Length)if(Length > length)length := Length   row:=Rowcolumn:=Columnradius:=Radiusselect := Iendifendifendforselect_obj (ContoursSplit, ObjectSelected, select)
gen_circle_contour_xld (ContCircle, row, column, radius, 0, rad(360), 'positive', 1.0)
dev_display (ContCircle)dev_set_colored (12)
dev_set_line_width (3)
dev_display (SelectedContours)

 

相关内容

热门资讯

峰米系统是安卓系统吗,揭秘安卓... 你有没有听说过峰米系统?最近这个话题在数码圈里可是挺火的。很多人都在问,峰米系统是安卓系统吗?今天,...
华为系统emui和安卓系统的区... 你有没有发现,手机的世界里,系统就像是它们的灵魂,决定了它们能跳得多高、飞得多远。今天,咱们就来聊聊...
朗逸安卓系统车载导航,安卓系统... 你有没有想过,开车的时候,导航系统就像是个贴心的导航小精灵,带你穿梭在城市的每一个角落?今天,就让我...
排球鹰眼系统辅助器安卓,安卓排... 你有没有想过,在观看排球比赛时,那些精准的鹰眼系统是如何让比赛画面更加清晰、精彩呢?现在,就让我带你...
安卓系统和magic的区别 你有没有发现,现在手机市场上安卓系统和Magic系统就像是一对双胞胎,长得有点像,但又各有各的特色。...
安卓系统模拟win7,轻松实现... 你有没有想过,在安卓手机上也能体验Windows 7的韵味呢?没错,这就是今天我要跟你分享的神奇之旅...
安卓系统查公交车 你有没有想过,在繁忙的都市生活中,如何轻松地查找到你心仪的公交车呢?别急,今天就来给你支个招——利用...
强悍的安卓10系统下载,强悍性... 你有没有听说最近安卓系统又升级啦?没错,就是那个强悍的安卓10系统!你是不是已经迫不及待想要体验一下...
安卓不开机怎么重置系统,轻松恢... 手机突然不开机了,是不是心里慌得一批?别急,今天就来教你一招,让你的安卓手机重置系统,恢复活力! 一...
安卓怎么移植到苹果系统,揭秘跨... 你是不是也和我一样,手里拿着安卓手机,却对那苹果系统的诱惑无法抗拒?想要把安卓上的宝贝应用和资料搬到...
安卓9系统特点在哪,系统革新与... 你有没有发现,你的安卓手机最近是不是变得有点不一样了?没错,就是那个默默无闻的安卓系统,它悄悄地升级...
苹果手机系统操作安卓版,轻松迁... 你有没有想过,为什么苹果手机的系统那么受欢迎,而安卓版却总是被大家调侃呢?今天,就让我带你从多个角度...
麦芽安装安卓系统怎么安装,轻松... 你有没有想过,把安卓系统装到麦芽上,是不是就像给老式收音机配上蓝牙功能那么酷炫呢?想象你的麦芽设备瞬...
直板安卓系统手机游戏,直板安卓... 你有没有发现,最近手机游戏界又掀起了一股热潮?没错,就是那些让你一玩就停不下来的直板安卓系统手机游戏...
nolia是安卓系统吗,安卓系... 你有没有听说过Nolia这个操作系统?最近它在科技圈里可是小火了一把呢!很多人都在问,Nolia是安...
改善后的安卓系统,探索安卓系统... 你知道吗?最近安卓系统可是来了一次大变身,简直就像是换了个新灵魂一样! 作为一个紧跟科技潮流的数码达...
安卓系统小票机如何使用,轻松实... 你有没有想过,在繁忙的超市、商场或者餐厅,那些快速打印出小票的机器竟然是运行在安卓系统上的呢?没错,...
rm1090刷安卓系统 你有没有想过,给手机换个新系统,就像给它换了个新灵魂?今天,就让我带你一起探索如何用rm1090刷安...
369出行安卓系统,智慧导航新... 你有没有发现,最近出行软件界又掀起了一股热潮?没错,就是那个备受瞩目的369出行安卓系统!今天,就让...
韩国请假系统下载安卓版,享受便... 你知道吗?最近有个超级实用的韩国请假系统在咱们安卓用户中传得沸沸扬扬的!这个系统不仅操作简单,而且功...