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()
相关推荐
ghie90901 分钟前
GPS抗干扰算法MATLAB实现
开发语言·算法·matlab
格林威4 分钟前
基于轮廓特征的工件分类识别:实现无模板快速分拣的 8 个核心算法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·目标跟踪·分类·数据挖掘
Jasmine_llq5 分钟前
《UVA11181 条件概率 Probability|Given》
数据结构·算法·深度优先搜索(dfs)·剪枝(可行性剪枝)·组合枚举(递归暴力枚举)·条件概率统计与归一化
老鼠只爱大米11 分钟前
LeetCode算法题详解 560:和为K的子数组
算法·leetcode·前缀和·哈希表·子数组求和·subarraysum
MM_MS13 分钟前
Halcon小案例--->路由器散热口个数(两种方法)
人工智能·算法·目标检测·计算机视觉·视觉检测·智能路由器·视觉
小杨同学4913 分钟前
C 语言实战:超市水果结算系统(深度解析与优化)
后端·算法·设计
a3158238061 小时前
大语言模型应用开发技术要求
算法·大语言模型·应用开发
倦王1 小时前
力扣日刷26112
算法·leetcode·职场和发展
liu****1 小时前
能源之星案例
人工智能·python·算法·机器学习·能源
2501_901147831 小时前
环形房屋打家劫舍算法
考研·算法·leetcode·高考