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

识别装甲板

#识别装甲板

整体思路如下:

  • 图像预处理:
    • 选取颜色通道阈值区间
    • 形态学操作
    • 边缘检测
  • 筛选矩形:
    • 查找合适灯条,注意两两灯条之间的距离,是否垂直,角度问题(因为车在转的时候不同侧的灯条容易被错误识别为装甲板)
    • 筛选除去部分矩形(有些灯条组合需要删除)
  • 识别装甲板:
    • 绘图(远距离,近距离分别处理)
  • 判断是否是装甲板:
    • 遍历所有矩形,两两组合判断

##具体实现方法

方法一:hsv色彩分离

  1. 输入视频帧,读取每一帧图像
  2. 颜色空间转换 BGR → HSV
  3. 颜色阈值分割
    • 设定蓝色阈值范围(lower_blue,upper_blue)
    • 使用cv2.inRange()提取蓝色区域
  4. 形态学处理
    • 结构元素(3x3矩形核)
    • 开运算:去噪点
    • 闭运算:填充小孔
  5. 轮廓提取
    • cv2.findContours()检测外轮廓
  6. 灯条筛选
    • 计算轮廓外接矩形 (x, y, w, h)
    • 过滤:宽高比例 h/w > 3
    • 过滤:轮廓面积 > 50
  7. 灯条配对
    • 遍历所有灯条两两组合
    • 过滤条件:
      • 高度差 < 20% 最大高度
      • 灯条中心纵坐标差 < 最大高度50%
      • 中心横向距离在 0.5~5 倍最大高度范围内
  8. 装甲板绘制
    • 根据配对灯条计算矩形框
    • 绘制红色矩形标记
  9. 结果显示与退出
    • cv2.imshow展示
    • 按q退出循环

方法二:通道相减法(但是未使用)

  • 第一步:图像的预处理,从RGB的角度考虑去识别蓝色灯条,也就是说如果蓝色通道的分量要比 其他两个通道都要大,就能说明物体足够蓝,因此一般选择蓝色通道减去红色通道,经过此番操作后, 会发现原图中的蓝色区域仍然有着较高的亮度。
  • 第二步:二值化并取交集,以根据不同的阈值得到不同效果的图片进行不断地调整最后得到一个 最优的阈值
  • 第三步:形态学操作,先用滤波过滤图像,然后一般可以使用闭操作,先膨胀后腐蚀,来增强轮廓的表现。
  • 第四步:寻找轮廓并筛选拟合出的对象

利弊分析与整合(detect.py)

在实际操作中,我发现在近距离使用hsv色彩空间的效果比较好,可能是因为近距离的灯条比较明显,远距离下 灯条的亮度比较暗,使用bgr色彩空间的效果比较好,虽然牺牲了一部分的识别准确率,但是提高了识别的准确率 是真的,然后我分了两个不同的部分进行处理,也就是远距离和近距离采取的方法不同,不同之处见下:

  • 近距离检测(detect_near_distance):
    • 转为 HSV,设定蓝色阈值提取 mask
    • 提取轮廓,筛选为灯条
    • 成对配对灯条,构成装甲板候选对
  • 远距离检测(detect_far_distance):
    • 提取蓝色通道,并二值化
    • 模糊、膨胀、开闭运算增强连通区域
    • 拟合椭圆
    • 两两椭圆进行配对,限制角度、长度、距离、斜率等条件
    • 对配对结果使用NMS进行过滤去重

整体代码:

import cv2
import numpy as np#创建灯条类对象
c
http://www.dtcms.com/a/283535.html

相关文章:

  • C#语法基础总结(超级全面)(二)
  • 理解大模型的对话和检索能力
  • 车载诊断架构 --- 由于产线节拍引起的OEM EOL刷写问题
  • 标准化装配检测解决方案发布,可快速部署,换型仅需一分钟!
  • 多维傅里叶变换性质与计算
  • 权限隔离设计中实现字段级别的动态隐藏
  • [特殊字符]️ Snort 与 Suricata 入侵检测系统详解
  • Scratch竞赛题目
  • Python 多线程
  • Effective Python 第9条: 建议避免在for和while循环后使用else块
  • Scrapy无缝集成Splash:轻量级动态渲染爬虫终极解决方案
  • 轻量级消息总线实现 (C++)
  • 适用于高性能封装的TGV视觉检测方案
  • 版本更新 | 华望M-Design 4400版本功能更新详解(下篇)
  • [特殊字符] Electron 中的 `global` 变量
  • LVGL 列表表格控件颜色修改
  • 【时时三省】(C语言基础)通过指针引用多维数组2
  • oracle服务器定时备份Windows Server
  • 怎么用快鲸aiseo提升百度搜索排名?
  • 在 IntelliJ IDEA 中添加框架支持的解决方案(没有出现Add Framework Support)
  • 因果发现PCMCI 算法简述、Tigramite库的简单实践
  • 了解Java21
  • 项目流程管理系统使用建议:推荐13款
  • 【前端】【Echarts】【热力图】ECharts 热力图配置详解:从分割线到数据标签的全面指南
  • SQLSERVER清理日志
  • FreeRTOS学习笔记之任务调度
  • Maple2025 软件安装教程(Win版)
  • C++基础语法/C++语言新特性
  • 嵌入式Linux内存管理子系统控制与实现
  • 视觉SLAM:使用 Sophus 的 SE3 类,自己设计 g2o 的节点与边,实现 PnP 和 ICP 的优化