YOLOV5识别结果怎么只保存图片不保存视频
时间: 2024-10-25 14:08:25 浏览: 44
YOLOv5确实支持在视频上进行物体检测,但如果你想从视频流中只保存检测到目标的图片,而不保存整个视频,你需要对每帧单独处理。以下是一个基本步骤:
1. **导入所需的库**:
```python
import torch
from PIL import Image
import cv2
from detectron2.modeling import build_model
from detectron2.config import get_cfg
```
2. **加载YOLOv5模型**:
```python
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', force_reload=True).to(device)
```
3. **读取视频帧并处理**:
```python
cap = cv2.VideoCapture('video.mp4') # 替换为你的视频文件名
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
for i in range(frame_count):
ret, frame = cap.read()
if not ret:
break
# 将BGR转换为RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 检测物体并保存图片
result = model(frame)
output = result.pandas().xyxy[0] # 取第一个框
save_img_path = f"frame_{i:06d}.jpg"
cv2.imwrite(save_img_path, frame[output["bbox"].astype(int)])
cap.release()
```
这个脚本会在每个视频帧检测到目标后保存一张图片,图片命名规则是`frame_000001.jpg`, `frame_000002.jpg`等。
阅读全文