【计算机视觉】OpenCV实战项目-AdvancedLaneDetection 车道检测

AdvancedLaneDetection 项目解析

      • 项目概述
      • 项目结构
      • 功能和步骤
      • 依赖项
      • 使用方法
      • 项目特点
      • 改进建议
      • 结论
      • 运行项目
        • [1. 克隆项目仓库](#1. 克隆项目仓库)
        • [2. 安装依赖项](#2. 安装依赖项)
        • [3. 准备数据](#3. 准备数据)
        • [4. 运行项目](#4. 运行项目)
        • [5. 调整配置(可选)](#5. 调整配置(可选))
        • [6. 查看结果](#6. 查看结果)
        • [7. 调试和测试](#7. 调试和测试)
        • [8. 常见问题及解决方法](#8. 常见问题及解决方法)
          • [问题 1:OpenCV 未安装](#问题 1:OpenCV 未安装)
          • [问题 2:MoviePy 未安装](#问题 2:MoviePy 未安装)
          • [问题 3:np.int报错"AttributeError: module 'numpy' has no attribute 'int'."](#问题 3:np.int报错“AttributeError: module 'numpy' has no attribute 'int'.”)
          • [问题 4:文件路径错误](#问题 4:文件路径错误)
          • [问题 5:依赖项版本冲突](#问题 5:依赖项版本冲突)
        • [9. 进一步探索](#9. 进一步探索)

项目概述

AdvancedLaneDetection 是一个基于 Python 的计算机视觉项目,旨在通过 OpenCV 和其他图像处理技术检测车道线并突出显示车道区域。该项目受到 Udacity 自动驾驶汽车纳米学位课程中"Advanced Lane Lines"项目的启发。

项目结构

  • src:主要项目目录,核心代码位于 laneDetection.py,支持函数在 preprocess.py
    calibrateCamera.py 中。
  • data:包含样本数据,用于实验。如果使用新的视频数据,需要更新 main.py 中的文件名。
  • data/calibration:存储用于相机校准的棋盘格图像。

功能和步骤

  • 相机校准:计算相机校准矩阵和畸变系数,使用一组棋盘格图像。 畸变校正:对原始图像应用畸变校正。
  • 二值化处理:通过颜色变换、梯度等方法创建阈值化的二值图像。 透视变换:应用透视变换将二值图像转换为"鸟瞰图"。
  • 车道线检测:使用滑动窗口方法检测车道像素并拟合车道边界。 曲率和车辆位置计算:确定车道的曲率和车辆相对于中心的位置。
  • 结果可视化:将检测到的车道边界重新映射回原始图像,并输出车道边界和曲率、车辆位置的数值估计。

依赖项

复制代码
Python 3
OpenCV
NumPy
Matplotlib
MoviePy

使用方法

  1. 克隆项目仓库。
  2. 打开 src 目录,在 IDE 中开始 main.py
  3. 运行项目。
  4. 如果需要在自己的视频上测试,更新 data 目录中的文件名。

项目特点

  • 该项目不仅检测车道线,还计算车道的曲率和车辆位置。
  • 使用了多种图像处理技术,如颜色变换、梯度计算、透视变换等。
  • 适用于自动驾驶车辆和驾驶辅助系统。

改进建议

  • 自动调整搜索窗口宽度,以适应车道宽度变化。
  • 开发更灵活的车道线提取方法,以适应不同光照条件。
  • 应用其他计算机视觉技术,以增强算法在图像噪声增加时的鲁棒性。

结论

AdvancedLaneDetection 项目通过结合多种计算机视觉技术,实现了对车道线的准确检测和车道曲率的计算。该项目在没有相机参数的情况下也能准确检测车道线,具有较高的鲁棒性

好的!以下是补充的详细运行步骤,帮助你顺利运行 AdvancedLaneDetection 项目:

运行项目

1. 克隆项目仓库

首先,你需要从 GitHub 上克隆项目仓库到本地。以下是克隆的命令:

bash 复制代码
git clone https://github.com/KushalBKusram/AdvancedLaneDetection.git
2. 安装依赖项

进入项目目录,安装所需的 Python 包。推荐使用虚拟环境来管理依赖项。

创建虚拟环境(可选)
bash 复制代码
python -m venv venv
激活虚拟环境
  • Windows

    bash 复制代码
    venv\Scripts\activate
  • macOS/Linux

    bash 复制代码
    source venv/bin/activate
安装依赖项
bash 复制代码
pip install numpy opencv-python matplotlib moviepy
3. 准备数据

确保项目目录中的 data 文件夹包含所需的图像和视频文件。如果需要使用自己的数据,可以将文件替换到 data 文件夹中,并更新 main.py 中的文件路径。

4. 运行项目

进入 src 目录,运行主程序:

bash 复制代码
cd AdvancedLaneDetection/src
python main.py
5. 调整配置(可选)

如果你需要使用自己的视频或图像文件,可以修改 main.py 中的文件路径。例如:

python 复制代码
# 修改视频文件路径
video_path = '../data/project_video.mp4'
6. 查看结果

运行程序后,程序会处理视频文件,并在控制台输出车道的曲率和车辆位置信息。处理后的视频会保存到 output 文件夹中。

7. 调试和测试

如果你遇到任何问题,可以逐步调试代码。例如:

  • 检查相机校准是否成功。
  • 检查二值化处理的效果。
  • 检查透视变换是否正确。
8. 常见问题及解决方法
问题 1:OpenCV 未安装

如果运行时提示 ModuleNotFoundError: No module named 'cv2',请确保 OpenCV 已正确安装:

bash 复制代码
pip install opencv-python
问题 2:MoviePy 未安装

如果运行时提示 ModuleNotFoundError: No module named 'moviepy',请安装 MoviePy:

bash 复制代码
pip install moviepy

# 如果你仍然遇到问题,可能是 moviepy 2.0.0 版本引入了不兼容的更改。你可以回退到 1.0.3 版本,这是 moviepy 1.x 系列中的一个稳定版本,能够兼容原有的导入方式。
# 卸载当前版本,并安装 moviepy 1.0.3:
pip uninstall moviepy
pip install moviepy==1.0.3
问题 3:np.int报错"AttributeError: module 'numpy' has no attribute 'int'."

将代码中的np.int() 改为int()

问题 4:文件路径错误

确保 main.py 中的文件路径正确。如果路径错误,程序会报错。

问题 5:依赖项版本冲突

如果你遇到依赖项版本冲突,可以尝试更新所有依赖项:

bash 复制代码
pip install --upgrade numpy opencv-python matplotlib moviepy
9. 进一步探索
  • 调整参数 :你可以调整 preprocess.pylaneDetection.py 中的参数,以优化车道检测的效果。
  • 实验不同数据:尝试使用不同的视频或图像文件,测试算法的鲁棒性。
  • 改进算法:根据项目的改进建议,尝试实现更高级的车道检测算法。
相关推荐
threelab2 小时前
07.three官方示例+编辑器+AI快速学习webgl_buffergeometry_attributes_integer
人工智能·学习·编辑器
背太阳的牧羊人3 小时前
tokenizer.encode_plus,BERT类模型 和 Sentence-BERT 他们之间的区别与联系
人工智能·深度学习·bert
学算法的程霖3 小时前
TGRS | FSVLM: 用于遥感农田分割的视觉语言模型
人工智能·深度学习·目标检测·机器学习·计算机视觉·自然语言处理·遥感图像分类
博睿谷IT99_3 小时前
华为HCIP-AI认证考试版本更新通知
人工智能·华为
一点.点4 小时前
SafeDrive:大语言模型实现自动驾驶汽车知识驱动和数据驱动的风险-敏感决策——论文阅读
人工智能·语言模型·自动驾驶
concisedistinct4 小时前
如何评价大语言模型架构 TTT ?模型应不应该永远“固定”在推理阶段?模型是否应当在使用时继续学习?
人工智能·语言模型·大模型
找了一圈尾巴4 小时前
AI Agent-基础认知与架构解析
人工智能·ai agent
jzwei0234 小时前
Transformer Decoder-Only 参数量计算
人工智能·深度学习·transformer
小言Ai工具箱5 小时前
PuLID:高效的图像变脸,可以通过文本提示编辑图像,通过指令修改人物属性,个性化文本到图像生成模型,支持AI变脸!艺术创作、虚拟形象定制以及影视制作
图像处理·人工智能·计算机视觉
白熊1885 小时前
【计算机视觉】基于深度学习的实时情绪检测系统:emotion-detection项目深度解析
人工智能·深度学习·计算机视觉