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()
相关推荐
CoovallyAIHub25 分钟前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI17 小时前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v20 小时前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农1 天前
【React用到的一些算法】游标和栈
算法·react.js
博笙困了1 天前
AcWing学习——双指针算法
c++·算法
moonlifesudo1 天前
322:零钱兑换(三种方法)
算法
NAGNIP2 天前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队2 天前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
xiaohouzi1122332 天前
OpenCV的cv2.VideoCapture如何加GStreamer后端
人工智能·opencv·计算机视觉