当前位置: 首页 > ai >正文

【机械视觉】Halcon—【十、实例—木头检测_充电宝检测_豆子检测】

【机械视觉】Halcon—【十、木头检测_充电宝检测_豆子检测】

目录

【机械视觉】Halcon—【十、木头检测_充电宝检测_豆子检测】

木头检测

1-输入图像

2-阈值分割运算筛选

3-计算总数并展示

充电宝检测

项目实例

检测豆子

项目实例


木头检测

项目要求: 检测图片中有多少根木头

操作流程:

        输入图像--> 阈值分割--> 筛选--> 计算总数并展示

图片:

1-输入图像

通过read_image()算子获取图像,再进行转成灰度图。

dev_clear_window ()
read_image (Image, '1')
* 把彩色图像转成灰色图像
rgb1_to_gray (Image, GrayImage)

2-阈值分割运算筛选

通过threshold进行阈值分割处理,然后筛选出单个的木头。再将未筛选出的进行腐蚀和膨胀运算,最后进行合并区域

************统计未粘连在一起**************
threshold (GrayImage, Region, 50, 255)
* 矩形开运算
opening_rectangle1 (Region, RegionOpening, 10, 10) 
connection (RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 20000)*************统计连接在一起的**************
select_shape (ConnectedRegions, SelectedRegions1, 'area', 'and', 20000, 99999)
erosion_circle (SelectedRegions1, RegionErosion, 13.5)  // 腐蚀运算
connection (RegionErosion, ConnectedRegions1)
dilation_circle (ConnectedRegions1, RegionDilation, 13.5) // 膨胀运算* 合并两个区域
concat_obj (RegionDilation, SelectedRegions, ObjectsConcat)

3-计算总数并展示

count_obj (ObjectsConcat, Number)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (Image)
dev_disp_text ('数量: '+Number, 'window', 'top', 'left', 'black', [], [])


充电宝检测

项目要求: 检测充电宝上的小孔

项目流程: 导入图片-->绘制检测区域-->阈值分割-->统计数量并展示

图片:

项目实例

read_image (Image, 'progres.png')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)dev_display (Image)
dev_set_color ('red')
dev_set_draw ('margin')
disp_message (WindowHandle, '请绘制检测区域', 'window', 12, 12, 'black', 'true')* 绘制检测区域
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
reduce_domain (Image, Rectangle, ImageReduced)
*crop_domain (ImageReduced, ImagePart)
*dev_clear_window ()
*dev_display (ImagePart)*根据阈值分割 连通 筛选
threshold (ImageReduced, Region, 0, 160)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 20, 29)count_obj (SelectedRegions, Number)
dev_disp_text ('数量: '+Number, 'window', Row, Column, 'black', [], [])


检测豆子

项目要求: 检测充电宝上的小孔

项目流程: 导入图片-->阈值分割-->统计数量并展示

图片:

项目实例

dev_update_off ()    //关闭自动更新
read_image (Image, 'pellets')
dev_display (Image)
stop ()*threshold 全局阈值分割根据阈值最小值和最大值进行范围提取
*auto_threshold (Image, Regions, 2) 自动高斯平滑阈值分割 多阈值分割
*二值化自动阈值分割:适用于具有明显的双峰的直方图,自动确定阈值
*1 输入图片
*2  二值化输出区域
*3 阈值分割方式
*max_separability  最大限度分离物体和背景部分
*smooth_histo  获取直方图,再平滑直方图, 查找最小值作为阈值
*4 提取的区域是亮部分还是暗部分 dark暗部分,light 亮部分
*5 阈值
binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold)*腐蚀操作:去除一些杂斑  半径尽量写奇数值 3 5 7 9、、、
erosion_circle (Region, RegionErosion, 7)
connection (RegionErosion, ConnectedRegions)count_obj (ConnectedRegions, Number)
dev_display (ConnectedRegions)dev_disp_text ('豆子个数为'+Number, 'window', 'top', 'left', 'black', [], [])

http://www.xdnf.cn/news/12467.html

相关文章:

  • python打卡44天
  • Linux 下的COW机制(copy-on-write)
  • python八股文算法:三数之和
  • 前端~三维地图(cesium)地图遮罩蒙层
  • 货运车辆在高速公路上发生故障,应如何设置警示标志?
  • 山洪径流过程及洪水淹没数值模拟
  • JDK21 虚拟线程原理剖析与性能深度解析
  • 力扣面试150题--克隆图
  • 2025年服装收银系统推荐:助力服装商家高效经营
  • SDC命令详解:使用set_min_capacitance命令进行约束
  • hbuildx运行uzapp项目初始化配置
  • gid1 gid2 profileOwner
  • 使用 XState 状态机打造英语单词学习界面(demo)
  • 深入Kubernetes源码阅读指南核心概念- /pkg/api
  • 使用qsort函数对字符串中的星期名称进行排序
  • 30.【新型数据架构】-区块链数据架构
  • Java并发编程实战 Day 13:Fork/Join框架与并行计算
  • 如何解决 远程 合并冲突
  • Docker容器运行一段时间后GPU无法使用报错Failed to initialize NVML: Unknown Error
  • AFNetworking `setSecurityPolicy:` 方法源码解析及最佳实践
  • 以太网原理图设计和PCB设计deepseek
  • 三十三、面向对象底层逻辑-SpringMVC九大组件之HandlerExceptionResolver接口设计
  • 张量的理解
  • Python如何去除图片干扰
  • pp-ocrv5的关键改进PPHGNetV2_B4
  • java 异步
  • 2025-适用于Windows11Version 24H2的05累积更新,适合基于x64的系统(KB5058411) 安装错误-0x800f0831
  • 第四章 信息系统管理-4.1 管理方法
  • 正式上线!在 Sui 主网上使用 Nautilus 构建防篡改预言机
  • MCP是什么