12:图像处理—Blob分析+边缘提取

框架思路

利用blob分析进行图像处理,提取目标进行填充,生成外接圆,最后得到中心点,显示结果


主程序

复制代码
read_image(Image, './1')

*方法一:Blob分析(稳定)**************************************************************************************
threshold (Image, Regions, 152, 255)
opening_circle(Regions, RegionOpening, 13.5)
fill_up(RegionOpening, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
area_center(SelectedRegions, Area, Row, Column)

if(Area<1500000)
    return()
endif

*区域转圆形方法一
* smallest_circle(SelectedRegions, Row1, Column1, Radius)
* gen_circle_contour_xld(ContCircle, Row1, Column1, Radius, 0, 6.28318, 'positive', 1)

*区域转轮廓方法二
dev_set_draw('margin')
shape_trans(SelectedRegions, RegionTrans, 'outer_circle')
gen_contour_region_xld(RegionTrans, Contours, 'border')
fit_circle_contour_xld(Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1,Radius, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row1, Column1, Radius, 0, rad(360), 'positive', 1)

*圆中心
gen_cross_contour_xld(Cross, Row1, Column1, 56, 0.785398)

*显示结果
dev_set_draw('margin')
dev_display(Image)
dev_set_color('red')
dev_display(Cross)
dev_set_color('red')
dev_display(ContCircle)
stop()


*方法二:边缘提取**************************************************************************************************
dev_set_colored(12)
dev_clear_window ()
dev_display (Image)
threshold (Image, Regions, 115, 255)
connection(Regions, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
fill_up(SelectedRegions, RegionFillUp)
closing_circle(RegionFillUp, RegionClosing, 53.5)

shape_trans(RegionClosing, RegionTrans, 'outer_circle')

dilation_circle(RegionTrans, RegionDilation, 15)
erosion_circle(RegionTrans, RegionErosion, 15)
difference(RegionDilation, RegionErosion, RegionDifference)
reduce_domain(Image,  RegionDifference, ImageReduced)
dev_clear_window()
dev_display(ImageReduced)

edges_sub_pix(ImageReduced, Edges, 'canny', 2, 40, 80)
* segment_contours_xld(Edges, ContoursSplit, 'lines_circles', 5, 4, 2)

union_cocircular_contours_xld(Edges, UnionContours, 2.5, 2.1, rad(15), 130, 130, 130, 'true', 1)

length_xld(UnionContours, Length)

tuple_sort_index(Length, Indices)

count_obj(UnionContours, Number)

select_obj(UnionContours, ObjectSelected,Indices[Number-1]+ 1)

fit_circle_contour_xld(ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

gen_cross_contour_xld(Cross, Row, Column, 156, rad(0))

gen_circle_contour_xld(ContCircle, Row, Column, Radius, rad(0),rad(360), 'positive', 1)

*显示结果
dev_set_draw('margin')
dev_display(Image)
dev_set_color('green')
dev_display(Cross)
dev_set_color('red')
dev_display(ContCircle)
dev_get_window(windowhandle)
disp_message(windowhandle,'1', 'window', 10, 10, 'black', 'true')
stop()
相关推荐
何其有幸.3 小时前
实验3-3 比较大小(PTA|C语言)
c语言·数据结构·算法
东阳马生架构4 小时前
Sentinel源码—8.限流算法和设计模式总结二
算法·设计模式·sentinel
老饼讲解-BP神经网络5 小时前
一篇入门之-评分卡变量分箱(卡方分箱、决策树分箱、KS分箱等)实操例子
算法·决策树·机器学习
何其有幸.5 小时前
实验6-3 使用函数求特殊a串数列和(PTA|C语言)
c语言·数据结构·算法
不会计算机的捞地5 小时前
【数据结构入门训练DAY-24】美国大选
数据结构·算法
riveting5 小时前
SD2351核心板:重构AI视觉产业价值链的“超级节点”
大数据·linux·图像处理·人工智能·重构·智能硬件
明月看潮生5 小时前
青少年编程与数学 02-018 C++数据结构与算法 11课题、分治
c++·算法·青少年编程·编程与数学
闭月之泪舞6 小时前
OpenCv高阶(十)——光流估计
人工智能·opencv·计算机视觉
Echo``6 小时前
2:QT联合HALCON编程—图像显示放大缩小
开发语言·c++·图像处理·qt·算法
.似水6 小时前
2025.4.22_C_可变参数列表
java·c语言·算法