news 2026/3/15 0:20: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/3/14 3:22:30

AI大模型时代程序员生存指南:从职业转型到高薪岗位的完整路径_大龄程序员想转行大模型,应该往哪个方向转?

AI正颠覆全行业,要求每个人提升AI领导力。未来职业结构将呈现"两头重,中间轻"形态,程序员需向专业能力更强的方向发展。文章详细介绍了程序员转型大模型开发的四大方向(NLP、CV、算法、部署),分析了岗位需求和薪资前景&…

作者头像 李华
网站建设 2026/3/12 14:44:43

基于SpringBoot的智慧医疗问诊系统毕设源码+文档+讲解视频

前言 随着医疗数字化转型加速,传统就医模式存在挂号难、问诊排队久、医疗资源分配不均等问题,难以满足群众便捷化、高效化的就医需求。本课题旨在设计并实现一款基于SpringBoot框架的智慧医疗问诊系统,构建“线上问诊健康管理”一体化医疗服务…

作者头像 李华
网站建设 2026/3/14 22:51:59

使用pyproject.toml替代setup.py管理Miniconda项目依赖

使用 pyproject.toml 管理 Miniconda 项目的现代依赖实践 在数据科学和人工智能项目中,你是否曾遇到这样的场景:同事拉下代码后运行报错,提示“numpy 版本不兼容”?或者论文实验在本地完美复现,换到服务器却因环境差异…

作者头像 李华
网站建设 2026/3/14 14:18:28

SSH密钥认证连接Miniconda容器实现免密登录

SSH密钥认证连接Miniconda容器实现免密登录 在数据科学和人工智能开发中,一个常见的痛点是:如何在保证环境隔离与依赖一致性的前提下,安全高效地访问远程计算资源?尤其是在使用GPU服务器或Docker容器进行模型训练时,频…

作者头像 李华
网站建设 2026/3/14 10:04:16

Miniconda vs Anaconda:为什么选择轻量级Python镜像更高效

Miniconda vs Anaconda:为什么轻量级 Python 环境才是现代 AI 开发的正确打开方式 在今天的 AI 实验室或数据科学团队中,你可能会遇到这样一幕:一位同事兴奋地分享他刚刚训练出的高精度模型,但当你试图在他的代码基础上复现实验时…

作者头像 李华
网站建设 2026/3/14 12:13:56

必知!哪家实验室净化超靠谱

必知!哪家实验室净化超靠谱前言在现代科学研究和工业生产中,实验室净化的作用日益凸显。一个干净、无菌、无尘的实验环境,不仅能够保证实验结果的准确性和可靠性,还能保障实验人员的安全和健康。那么,在众多的实验室净…

作者头像 李华