YOLO应用化之保存视频

YOLO原生代码不支持保存视频,但可以通过修改代码将检测结果整合成视频。介绍如何利用YOLO检测视频或相机中的物体,并提供了一种方法将检测的每一帧保存为图片。已分享相关代码更改于Github,涉及`demo.c`和`image.c`两个文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YOLO的原生代码没有保存视频的功能,但我们往往需要一个视频文件作为检测结果。

使用命令

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights

可以打开camera进行实时检测MSCOCO的80种物体。(附加参数-c camera_index 可以选择camera)

如果没有camera也可以使用命令

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights input.avi

检测视频文件中的物体。

通过附加参数-prefix 可以将每一帧输出保存为jpg图片。

我们需要修改下代码将检测结果以视频文件形式保存。
已将代码提交到Github,先放链接
https://github.com/PaulChongPeng/darknet/commit/0366ba1fc0f8a640a11d300a3ef16382fbc530ef

共需要修改两个文件

demo.c

@@ -10,13 +10,18 @@
 #include <sys/time.h>

 #define FRAMES 3
+#define SAVEVIDEO

 #ifdef OPENCV
 #include "opencv2/highgui/highgui_c.h"
 #include "opencv2/imgproc/imgproc_c.h"
 #include "opencv2/videoio/videoio_c.h"
 image get_image_from_stream(CvCapture *cap);

+#ifdef SAVEVIDEO
+stati
### 使用YOLO进行视频预测并保存输出数据 为了实现使用YOLO视频进行预测并将结果数据保存,可以采用Ultralytics YOLO生态系统提供的工具和方法[^1]。具体来说,YOLOv8不仅支持图像检测还涵盖了视频处理功能,能够执行检测、分割、姿态估计等多种AI视觉任务,并且具备良好的灵活性用于不同应用场景[^2]。 对于视频预测流程而言,在准备好训练完成的YOLO模型之后,可以通过加载预训练权重来初始模型实例。接着读取待测视频流,逐帧传递给模型以获取每帧对应的预测结果。最后将带有标注框或其他可视信息的结果帧重新组合成新的视频文件或者单独存储每一帧带标记后的静态图象。 下面给出一段Python代码示例展示如何利用YOLOv8对本地磁盘上的视频文件做预测操作: ```python from ultralytics import YOLO import cv2 import os # 加载已训练好的YOLOv8模型 model = YOLO('path/to/best.pt') # 替换为实际路径 video_path = 'input_video.mp4' # 输入视频路径 output_dir = './results/' # 输出目录 os.makedirs(output_dir, exist_ok=True) cap = cv2.VideoCapture(video_path) frame_width = int(cap.get(3)) frame_height = int(cap.get(4)) out = cv2.VideoWriter(os.path.join(output_dir,'output.avi'), cv2.VideoWriter_fourcc(*'XVID'), cap.get(cv2.CAP_PROP_FPS), (frame_width, frame_height)) while True: ret, img = cap.read() if not ret: break results = model(img)[0].plot() # 执行推理并绘制边界框等信息 out.write(results) # 将处理过的帧写入输出视频 cap.release() out.release() print(f"Video saved to {os.path.abspath(output_dir)}") ``` 这段脚本会遍历整个输入视频的所有帧,调用`model()`函数来进行目标识别工作,随后通过OpenCV库把含有检测结果的画面序列回一个新的AVI格式视频中去。注意这里假设使用的YOLO版本已经包含了`.plot()`这样的便捷接口用来快速生成含有所需元数据(比如类别名称、置信度分数以及位置坐标)在内的直观视图;如果不是最新版,则可能需要额外编写一些辅助逻辑来自定义绘图过程[^3]。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值