news 2026/6/10 19:23:58

yolov5识别demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
yolov5识别demo
# 1. 安装 PyTorch(核心深度学习框架,根据你的CUDA版本选择,无GPU可安装CPU版) # CPU版(通用,无NVIDIA显卡优先选择) pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # GPU版(有NVIDIA显卡,需先安装CUDA 11.7+/cuDNN 8.5+,以CUDA 11.8为例) # pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 2. 安装 YOLOv5 依赖(包含opencv、numpy等) pip install opencv-python numpy pandas ultralytics

图片目标识别

# 导入必要的库 from ultralytics import YOLO import cv2 import os def yolov5_image_detection(image_path, save_path="output_result.jpg"): """ YOLOv5 图片目标识别函数 :param image_path: 输入图片路径(相对/绝对路径) :param save_path: 识别结果图片保存路径 """ # 1. 加载 YOLOv5 预训练模型(yolov5s 是最小、最快的模型,适合快速测试) # 可选模型:yolov5n(更小)、yolov5m、yolov5l、yolov5x(更大,精度更高,速度更慢) model = YOLO("yolov5s.pt") # 2. 验证输入图片是否存在 if not os.path.exists(image_path): print(f"错误:图片 {image_path} 不存在,请检查路径!") return # 3. 执行目标检测(conf=0.25 表示置信度阈值,只保留置信度>25%的结果) results = model(image_path, conf=0.25) # 4. 处理检测结果,绘制边界框和类别标签 # 读取原始图片 img = cv2.imread(image_path) # 遍历检测结果(单张图片只取第一个结果) for result in results: boxes = result.boxes # 获取检测框信息 for box in boxes: # 提取框的坐标(xyxy 格式:左上x、左上y、右下x、右下y) x1, y1, x2, y2 = map(int, box.xyxy[0]) # 提取类别名称和置信度 cls_name = result.names[int(box.cls[0])] confidence = box.conf[0].item() # 5. 在图片上绘制边界框和文字 # 绘制红色边界框(BGR格式,(0,0,255)为红色,线宽2) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2) # 绘制文字背景(避免文字与图片重叠看不清) text = f"{cls_name}: {confidence:.2f}" text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.6, 2)[0] cv2.rectangle(img, (x1, y1 - text_size[1] - 10), (x1 + text_size[0], y1), (0, 0, 255), -1) # 绘制类别和置信度文字 cv2.putText(img, text, (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) # 6. 保存识别结果图片 cv2.imwrite(save_path, img) print(f"识别完成!结果已保存至:{os.path.abspath(save_path)}") # 7. (可选)显示识别结果图片(窗口按任意键关闭) cv2.imshow("YOLOv5 Image Detection Result", img) cv2.waitKey(0) cv2.destroyAllWindows() # 主函数调用 if __name__ == "__main__": # 替换为你的图片路径(可放任意测试图片,如人物、车辆、动物等) INPUT_IMAGE_PATH = "test.jpg" yolov5_image_detection(INPUT_IMAGE_PATH)

视频 / 摄像头实时识别

# 导入必要的库 from ultralytics import YOLO import cv2 def yolov5_video_detection(video_source=0, save_video=False, save_path="output_video.mp4"): """ YOLOv5 视频/摄像头目标识别函数 :param video_source: 视频源(0=默认摄像头,也可传入视频文件路径如"test.mp4") :param save_video: 是否保存识别后的视频 :param save_path: 保存视频的路径 """ # 1. 加载 YOLOv5 预训练模型 model = YOLO("yolov5s.pt") # 2. 打开视频源 cap = cv2.VideoCapture(video_source) if not cap.isOpened(): print(f"错误:无法打开视频源 {video_source}!") return # 3. (可选)配置视频保存参数 fourcc = None out = None if save_video: # 获取视频宽度、高度、帧率 frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = int(cap.get(cv2.CAP_PROP_FPS)) or 30 # 视频编码格式 fourcc = cv2.VideoWriter_fourcc(*"mp4v") out = cv2.VideoWriter(save_path, fourcc, fps, (frame_width, frame_height)) print("识别中... 按 'q' 键退出窗口") # 4. 循环读取帧并执行检测 while cap.isOpened(): ret, frame = cap.read() if not ret: break # 视频读取完毕或摄像头断开 # 5. 执行目标检测 results = model(frame, conf=0.25) # 6. 处理检测结果,绘制边界框 for result in results: boxes = result.boxes for box in boxes: x1, y1, x2, y2 = map(int, box.xyxy[0]) cls_name = result.names[int(box.cls[0])] confidence = box.conf[0].item() # 绘制边界框和文字 cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 0, 255), 2) text = f"{cls_name}: {confidence:.2f}" text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.6, 2)[0] cv2.rectangle(frame, (x1, y1 - text_size[1] - 10), (x1 + text_size[0], y1), (0, 0, 255), -1) cv2.putText(frame, text, (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) # 7. (可选)保存处理后的帧 if save_video and out is not None: out.write(frame) # 8. 显示识别结果 cv2.imshow("YOLOv5 Video/Camera Detection Result", frame) # 按 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 9. 释放资源 cap.release() if save_video and out is not None: out.release() print(f"视频保存完成!结果已保存至:{save_path}") cv2.destroyAllWindows() print("识别结束!") # 主函数调用 if __name__ == "__main__": # 可选:传入视频文件路径(如 "test.mp4"),或使用 0 调用摄像头 yolov5_video_detection(video_source=0, save_video=False)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 16:41:02

Markdown emoji表情增强技术文档可读性

Markdown 与 Emoji:重塑技术文档的可读性艺术 在人工智能与数据科学项目日益复杂的今天,一个常被忽视却影响深远的问题浮出水面:为什么开发者总是在配置环境时卡在第三步? 答案往往不在代码本身,而在于那份写着“请先…

作者头像 李华
网站建设 2026/6/10 11:55:43

基于SpringBoot的职工健康监护管理系统毕设源码+文档+讲解视频

前言 随着企业对职工健康重视程度的提升,传统职工健康管理模式存在档案分散、监护不及时、数据统计困难等问题,难以满足企业精准化健康管理需求。本课题旨在设计并实现一款基于SpringBoot框架的职工健康监护管理系统,构建高效、全面的企业职工…

作者头像 李华
网站建设 2026/6/10 11:55:08

springboot的家庭影像管理系统的设计与实现

背景分析随着数字化设备的普及,家庭产生的影像数据(照片、视频等)呈爆炸式增长。传统存储方式(如本地硬盘、相册)存在易丢失、难分类、共享不便等问题。SpringBoot作为高效的Java开发框架,结合云存储、智能…

作者头像 李华
网站建设 2026/6/10 11:56:33

使用conda-pack打包Miniconda环境用于离线部署

使用 conda-pack 打包 Miniconda 环境用于离线部署 在 AI 模型从实验室走向生产线的过程中,一个常被低估却极其关键的环节浮出水面:如何让代码在另一台机器上“真的跑起来”? 你有没有经历过这样的场景?本地训练好的 PyTorch 模型…

作者头像 李华
网站建设 2026/6/10 14:00:12

Pyenv与Miniconda对比:哪种更适合Python多版本管理?

Pyenv 与 Miniconda:如何选择适合你的 Python 多版本管理方案? 在今天这个 AI 和数据科学高速发展的时代,Python 已经不仅是“胶水语言”,更成为了科研、工程、产品开发的核心工具。然而,随之而来的挑战也愈发明显&…

作者头像 李华
网站建设 2026/6/10 3:00:10

springboot基于mvc的高校办公室行政事务管理系统(11621)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华