YOLOV8 ultralytics 视频预测代码

ultralytics本身提供了视频的预测代码,但我只发现了它好像只是提供了视频预测过程中进行预测结果显示的代码,没有发现它怎么保存预测后的视频结果,所以写了一个对预测后结果进行导出的代码。

import cv2
from ultralytics import YOLO
# 加载模型
model = YOLO('/root/runs/segment/train4/weights/best.pt')
# 打开视频文件
video_path = "/root/yolov8datasets/VID_20230625_105534.mp4"
cap = cv2.VideoCapture(video_path)
# 获取视频帧的维度
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
#创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('/root/yolov8datasets/output2.mp4', fourcc, 20.0, (frame_width, frame_height))
#循环视频帧
while cap.isOpened():
    # 读取某一帧
    success, frame = cap.read()
    if success:
        # 使用yolov8进行预测
        results = model(frame)
        #可视化结果
        annotated_frame = results[0].plot()
        #将带注释的帧写入视频文件
        out.write(annotated_frame)
    else:
        # 最后结尾中断视频帧循环
        break
#释放读取和写入对象
cap.release()
out.release()
  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个使用YOLOv8进行图像分割和预测Python示例代码(基于PyTorch实现): ```python import torch import cv2 import numpy as np import time # 导入YOLOv8模型 model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model='yolov8.pt') # 图像预处理函数 def preprocess(img): img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换颜色通道 img = cv2.resize(img, (640, 640)) # 调整大小 img = img.astype(np.float32) / 255.0 # 归一化 img = np.transpose(img, (2, 0, 1)) # 转换维度顺序 img = np.expand_dims(img, axis=0) # 增加batch维度 return img # 图像后处理函数 def postprocess(pred): boxes = pred.xyxy[0].cpu().numpy() # 获取预测框坐标 scores = pred.xyxy[0, :, 4].cpu().numpy() # 获取预测框置信度 labels = pred.xyxy[0, :, 5].cpu().numpy().astype(np.int) # 获取预测框类别 return boxes, scores, labels # 加载测试图像 img = cv2.imread('test.jpg') # 图像预处理 img = preprocess(img) # 模型推理 with torch.no_grad(): start = time.time() pred = model(torch.from_numpy(img).to('cuda')) end = time.time() print('Inference time: {:.4f} s'.format(end - start)) # 图像后处理 boxes, scores, labels = postprocess(pred) # 可视化预测结果 for box, score, label in zip(boxes, scores, labels): if score > 0.5: x1, y1, x2, y2 = box.astype(np.int) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2) cv2.putText(img, str(label), (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) cv2.imshow('Result', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码包括了模型加载、图像预处理、模型推理、图像后处理和结果可视化等步骤。你需要将`yolov8.pt`替换成你自己的YOLOv8模型权重文件,并将`test.jpg`替换成你自己的测试图像。 希望这个示例代码能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值