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

简介: 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算法。注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小)。
13037 3
基于OpenCV的双目摄像头测距(误差小)
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
|
算法 计算机视觉
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
|
机器学习/深度学习 编解码 监控
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
|
4月前
|
监控 自动驾驶 算法
行人与骑行者目标检测数据集(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`,帮助读者完成自定义模型的训练与评估。
6940 3
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
15900 1
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
29295 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的火焰烟雾实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的火焰烟雾实时检测系统,使用6744张图片训练有效模型,开发了带GUI界面的系统,支持图片、视频和摄像头实时检测,具备模型权重导入、检测置信度调节等功能,并提供项目完整代码和数据集。
4118 1
基于YOLOv8的火焰烟雾实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
传感器 编解码 vr&ar
Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
7689 0