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()
相关推荐
满分观察网友z15 分钟前
从UI噩梦到导航之梦:一道LeetCode经典题如何拯救了我的项目(116. 填充每个节点的下一个右侧节点指针)
算法
DoraBigHead1 小时前
小哆啦解题记——两数失踪事件
前端·算法·面试
不太可爱的大白1 小时前
Mysql分片:一致性哈希算法
数据库·mysql·算法·哈希算法
Tiandaren5 小时前
Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
selenium·测试工具·算法·自动化
岁忧6 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
chao_7896 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
秋说8 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法
gaosushexiangji8 小时前
利用sCMOS科学相机测量激光散射强度
大数据·人工智能·数码相机·计算机视觉
Maybyy8 小时前
力扣61.旋转链表
算法·leetcode·链表
卡卡卡卡罗特10 小时前
每日mysql
数据结构·算法