Blog/content/posts/2023/opencv-fps.md

64 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "🎬 Счётчик FPS в OpenCV"
date: 2023-10-03T21:41:14+03:00
draft: false
tags: [cv, tips, python]
---
На примере работы с YOLOv8 показываю получение FPS.
Необходим модуль `time` и две переменные: `prev_frame_time`, `new_frame_time`.
```python
import time
import cv2
from ultralytics import YOLO
model = YOLO('best_s_640.pt')
video_path = 'run.mp4'
cap = cv2.VideoCapture(video_path)
prev_frame_time = 0
new_frame_time = 0
while cap.isOpened():
success, frame = cap.read()
new_frame_time = time.time()
if success:
results = model(frame)
# Обработка кадра
# ...
fps = str(1 / (new_frame_time - prev_frame_time))
# Вывод FPS на кадр
cv2.putText(
annotated_frame,
fps,
(7, 70),
cv2.FONT_HERSHEY_SIMPLEX,
3,
(100, 255, 0),
3,
cv2.LINE_AA,
)
prev_frame_time = new_frame_time
cv2.imshow('OpenCV', complete_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
print('FPS: {}'.format(fps))
cap.release()
cv2.destroyAllWindows()
```