news 2026/5/2 1:28:13

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/5/1 8:13:31

基于SpringBoot的在线食品安全信息平台系统毕设源码+文档+讲解视频

前言 随着食品安全问题日益受到社会关注,公众对食品溯源、安全标准查询、监管信息公示等需求不断提升,传统信息披露模式存在分散、滞后等弊端。本课题旨在设计并实现一款基于SpringBoot框架的在线食品安全信息平台系统,构建一体化食品安全信息…

作者头像 李华
网站建设 2026/4/23 8:23:33

PyTorch模型保存与加载:在Miniconda中进行持久化操作

PyTorch模型保存与加载:在Miniconda中进行持久化操作 在深度学习项目中,一个常见的“噩梦”场景是:你花了几天时间训练出一个高精度模型,结果重启机器后发现代码还能跑,但模型权重不见了——因为忘了保存。更糟的是&am…

作者头像 李华
网站建设 2026/5/1 19:52:42

使用requirements.txt配合Miniconda管理Python依赖

使用requirements.txt配合Miniconda管理Python依赖 在人工智能和数据科学项目中,你是否曾遇到这样的场景:本地训练好的模型在同事的机器上跑不起来?或者几个月后自己重新运行实验时,因为库版本不一致导致结果无法复现?…

作者头像 李华
网站建设 2026/4/25 1:36:52

安装包管理新思路:Miniconda结合pip实现灵活依赖控制

安装包管理新思路:Miniconda结合pip实现灵活依赖控制 在人工智能项目开发中,你是否经历过这样的场景?刚从同事那里拿到一份训练脚本,满怀信心地运行 python train.py,结果却抛出一连串导入错误——PyTorch版本不兼容、…

作者头像 李华
网站建设 2026/5/1 9:42:32

Miniconda环境克隆命令conda create --clone实战应用

Miniconda环境克隆命令conda create --clone实战应用 在现代数据科学和AI开发中,一个常见的困扰是:为什么代码在一个环境中能跑通,在另一个环境却报错?往往问题并不出在代码本身,而是“环境不一致”——依赖包版本冲突…

作者头像 李华