Halcon小案例--->路由器散热口个数(两种方法)

路由器散热口个数

原图在Halcon自带的图片文件夹中,图片名称是progres

*方法一:(普通方法)

编写代码
•停止运行:stop()
•关闭之前的窗口:dev_close_window ()
•获取图片:read_image ()
•阈值分割:threshold ()
•连通器:connection ()
•筛选:select_shape()
•展示区域、图像:dev_display ()
•获取个数:count_obj ()
•文本显示:dev_disp_text()
cs 复制代码
*// 停止运行//--------------------- 
stop()
*// 关闭之前的窗口//--------------------- 
dev_close_window ()
*// 获取图片//--------------------- 
read_image (Image1, 'progres')
*// 阈值分割//--------------------- 
threshold (Image1, Region1, 60, 135)
*// 连通//--------------------- 
connection (Region1, ConnectedRegions1)
*// 面积、行、列筛选//--------------------- 
select_shape (ConnectedRegions1, SelectedRegions1, ['area','row','column'], 'and', [10,271.99,90], [50,344.4,333])
*// 展示区域、图像//--------------------- 
dev_display (Image1)
*// 展示斑点//--------------------- 
dev_display (SelectedRegions1)
*// 个数//--------------------- 
count_obj (SelectedRegions1, Number1)
*// 展示个数//--------------------- 
dev_disp_text ('小孔数量'+Number1+'个', 'image',100, 100, 'black', [], [])
效果演示

*方法二:(使用抠图)

编写代码
•获取图片:read_image ()
•绘制一个仿射矩形检测区域:draw_rectangle2()
•显示绘制区域:gen_rectangle2 ()
•从原始图像中抠出绘制形状的部分:reduce_domain ()
•阈值分割:threshold ()
•连通器:connection ()
•筛选:select_shape()
•展示区域、图像:dev_display ()
•获取个数:count_obj ()
•文本显示:dev_disp_text()
•设置显示的颜色:dev_set_color()
•清空窗体:dev_clear_window ()
•获取筛选之后的角度:orientation_region ()
•弧度转角度:tuple_deg ()
•获取椭圆区域的长半径和短半径及旋转角度:elliptic_axis()
•获取区域的面积和中心点坐标:area_center ()
cs 复制代码
*// 读取图片//--------------------- 
read_image (Image, 'progres.png')
*// 获取句柄//--------------------- 
dev_get_window (WindowHandle)
*// 绘制一个仿射矩形检测区域//--------------------- 
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
*// 显示绘制区域//--------------------- 
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*// 从原始图像中抠出绘制形状的部分//--------------------- 
* Image 输入的原始图像
* Rectangle 裁剪的区域
* ImageReduced 输出参数 裁剪之后的图像
reduce_domain (Image, Rectangle, ImageReduced)
*// 清空窗体内容//--------------------- 
dev_clear_window ()
*// 展示裁剪之后的区域//--------------------- 
dev_display (ImageReduced)
*// 对裁剪之后的进行阈值分割//--------------------- 
threshold (ImageReduced, Region, 77, 155)
*// 连通器分析//--------------------- 
connection (Region, ConnectedRegions)
*// 获取连通区域之后的个数//--------------------- 
count_obj (ConnectedRegions, Number)
*// 清空//--------------------- 
dev_clear_window ()
*// 展示裁剪之后的区域//--------------------- 
dev_display (ImageReduced)
*// 设置显示的颜色//--------------------- 
dev_set_color ('green')
*// 展示原图//--------------------- 
dev_display (Image)
*// 设置字体大小//--------------------- 
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*// 文本展示//--------------------- 
disp_message (WindowHandle, '小孔的个数'+Number+'个', 'image', 100, 100, 'black', 'true')
*// 面积筛选//--------------------- 
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 20, 30)
*// 获取连通之后小孔的角度 弧度//--------------------- 
orientation_region (SelectedRegions, Phi1)
*// 获取区域的面积和中心点坐标//--------------------- 
area_center (SelectedRegions, Area, Row1, Column1)
*// 获取椭圆区域的长半径和短半径及旋转角度//--------------------- 
* 参数1 SortedRegions 输入的区域/椭圆区域集合
* 参数2 Ra 输出的椭圆长半轴长度数组
* 参数3 Rb 输出的椭圆短半轴长度数组
* 参数4 Phi2 输出的椭圆方向(弧度值,0~2π)
elliptic_axis (SelectedRegions, Ra, Rb, Phi2)
*// 求所有半径的和---算子:sum(Ra)//--------------------- 
allSum := sum(Ra)
*// 个数//--------------------- 
count := |Ra|
*// 半径//--------------------- 
avg := allSum/count
*// 文本显示//--------------------- 
dev_disp_text ('半径为'+avg, 'image', 150, 100, 'black', [], [])
效果演示

希望对大家有所帮助, 感谢大家的关注和点赞。

相关推荐
焱童鞋41 分钟前
基于DJL的LSTM水文预报模型训练完整指南
人工智能·rnn·lstm
猎嘤一号44 分钟前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
V哥AI增长1 小时前
Schema.org 结构化数据与GEO技术落地:AI引擎引用机制与JSON-LD部署实证研究
大数据·运维·人工智能
马拉AI1 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
IT_陈寒1 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端
白狐_7981 小时前
408计算机网络第3章:PPP协议——帧格式、LCP/NCP、状态机与真题精讲
网络·计算机网络·智能路由器
用户938515635071 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
前端开发江鸟2 小时前
我能解释 RAG、MCP 和 Eval,却画不出一条完整的 Agent 链路
人工智能
guo_xiao_xiao_2 小时前
YOLO人物肖像发型分类目标检测数据集
yolo·目标检测·分类
ivywriter3 小时前
【具身智能】物理AI具体指什么,和具身智能是什么关系?
人工智能