Yolov5双目测距-双目相机计数及测距教程(附代码)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: Yolov5双目测距-双目相机计数及测距教程(附代码)

引言

计算机视觉领域,Yolov5-Binocular相机距离计数及测距是一个引人注目的研究方向。本教程将为小白用户提供一个简明扼要的学习指南,涵盖了关键步骤,包括标定、公示推倒以及重要的代码片段。


第一步:环境搭建

首先,确保你的环境已经正确搭建。你需要安装Yolov5以及相关的依赖项,可以通过以下命令在终端中完成:

pip install torch torchvision
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -U -r requirements.txt


第二步:标定相机

对于Binocular相机,标定是非常重要的一步,它能够校准相机参数,使得图像中的目标位置能够被准确地映射到相机坐标系中。你可以使用OpenCV中的calibrateCamera函数进行标定。

import numpy as np
import cv2

# 读取标定板图像
images = [cv2.imread(f'path/to/calibration_images/{i}.jpg') for i in range(1, num_images + 1)]

# 设置标定板参数
pattern_size = (7, 7)
objp = np.zeros((pattern_size[0] * pattern_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)

# 检测角点
objpoints = []
imgpoints = []
gray = cv2.cvtColor(images[0], cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, pattern_size, None)

# 进行标定
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)


第三步:公示推倒

公示推倒是为了校正由于镜头畸变而引起的图像失真,使用undistort函数即可进行推倒。这一步非常关键,因为它直接影响到目标在图像中的准确位置。

# 读取待推倒的图像
image = cv2.imread('path/to/image.jpg')

# 进行公示推倒
undistorted = cv2.undistort(image, mtx, dist, None, mtx)


第四步:Yolov5-Binocular相机距离计数及测距

最后,我们将Yolov5与标定后的相机参数结合起来,实现距离计数及测距。首先,确保你已经使用Yolov5训练了一个合适的模型。


在原始的 “yolov5” 中添加了3个文件 —> camera_config.py dis_count.py video_remain.py


  1. 1.首先要进行你的双目摄像头的标定 具体的标定方法百度上有很多, 我推荐matlab标定 额 因为我没找到python标定很好的程序
  2. 2.确定你的双目摄像头是单设备号还是双设备号的, 双设备号要确定你的设备号各是多少 比如我的摄像头是0和2 我就在video_remain.py 的59/60行 写了(0)
  3. 3.如果是单设备号 百度一下单设备号双目摄像头如何使用


代码说明

  • camera_config.py 双目摄像头参数
  • dis_count.py 深度图+距离矩阵
  • video_remain.py 主函数


结论

通过本教程,你已经学会了Yolov5-Binocular相机距离计数及测距的基本流程,包括相机标定、公示推倒以及Yolov5模型的应用。希望这对于初学者能够提供一些帮助,也欢迎大家进一步深入研究这个有趣而挑战性的领域。

相关文章
|
编解码 前端开发 算法
基于OpenCV的双目摄像头测距(误差小)
首先进行双目摄像头定标,获取双目摄像头内部的参数后,进行测距;本文的双目视觉测距是基于BM算法。注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小)。
12980 3
基于OpenCV的双目摄像头测距(误差小)
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
|
算法 计算机视觉
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
|
传感器 机器学习/深度学习 编解码
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
目相机使用来自单个视点的图像数据作为输入来估计对象深度,相比之下,立体视觉是基于视差和匹配不同视图的特征点,深度学习的应用也进一步提高了准确性。此外,SLAM可以建立道路环境模型,从而帮助车辆感知周围环境并完成任务。本文介绍并比较了各种目标检测和识别方法,然后解释了深度估计的发展,并比较了基于单目、立体和RGB-D传感器的各种方法,接下来回顾并比较了SLAM的各种方法。最后总结了当前存在的问题,并提出了视觉技术的未来发展趋势。
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
|
机器学习/深度学习 编解码 监控
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
|
3月前
|
监控 自动驾驶 算法
行人与骑行者目标检测数据集(5000张高质量标注)|YOLO训练数据集
本数据集含5000张真实道路场景图像,精准标注“行人”“骑行者”两类目标,采用YOLO标准格式(归一化bbox),覆盖多光照、多视角、多尺度及遮挡场景,适配YOLOv5/v8等主流模型,助力智能交通、自动驾驶与安全监控算法研发与落地。
行人与骑行者目标检测数据集(5000张高质量标注)|YOLO训练数据集
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
6814 3
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
28809 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的火焰烟雾实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的火焰烟雾实时检测系统,使用6744张图片训练有效模型,开发了带GUI界面的系统,支持图片、视频和摄像头实时检测,具备模型权重导入、检测置信度调节等功能,并提供项目完整代码和数据集。
4046 1
基于YOLOv8的火焰烟雾实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)