news 2026/3/30 15:23:44

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/27 11:35:46

AdisInsight数据库的3个应用场景与5个内容模块

AdisInsight是由Springer Nature集团旗下Adis出版社开发一款研发信息数据库,AdisInsight药物研发信息数据库包含关于药物开发、临床试验、药物不良反应事件、交易和专利的信息,其搜索范围涵盖数千种期刊、会议论文集、公司网站和其他已发表的资料&#x…

作者头像 李华
网站建设 2026/3/27 12:07:30

四轴桥板卧加编程:AB轴坐标转换宏程序与VT送出

四轴桥板-卧加-AB轴坐标转换宏程序送VT 四轴桥板卧加编程带刀尖跟随G65p9012配套UG-MC后处理,适用于四轴不带rtcp功能的机床工件任意摆放,一次装夹,任意点位建立坐标,后处理自动计算与回转中心的差值三菱-发那科-新代系统可通用A轴…

作者头像 李华
网站建设 2026/3/29 18:18:52

Python虚拟环境最佳实践:Miniconda取代传统venv方案

Python虚拟环境最佳实践:Miniconda取代传统venv方案 在AI项目日益复杂的今天,你是否曾遇到过这样的场景?——同事发来一份代码说“在我机器上跑得好好的”,结果你刚一运行就报错:ImportError: cannot import name XXX …

作者头像 李华
网站建设 2026/3/27 16:43:15

解决‘SSL error’问题:配置conda使用国内镜像源

解决“SSL error”问题:配置conda使用国内镜像源 在搭建AI开发环境时,你是否曾被一个反复出现的错误拦住去路? SSLError: Cant connect to HTTPS URL because the SSL module is not available. 或者更令人抓狂的是: ConnectionEr…

作者头像 李华
网站建设 2026/3/27 13:05:08

springboot大型超市前后台系统设计实现

背景分析大型超市管理系统在数字化转型中面临诸多挑战:传统人工管理效率低、库存易出错、顾客体验差。SpringBoot框架因其快速开发、微服务支持和生态兼容性,成为构建此类系统的理想选择。技术意义微服务架构:通过SpringCloud实现模块化拆分&…

作者头像 李华