У меня есть поток RTP/RTSP, работающий со скоростью 25 кадров в секунду, что подтверждено ffprobe -i <URI>
. Кроме того, VLC воспроизводит поток RTSP в режиме реального времени, но не показывает FPS в окне Информация о мультимедиа.
Однако, когда я использую OpenCV 4.1.1.26 для получения частоты кадров входного потока, он дает мне ответ 90000.0
.
Вопрос: как я могу использовать OpenCV для определения правильной частоты кадров в потоке RTSP? Что может заставить его сообщать 90000.0
вместо 25
?
Вот моя функция Python для получения частоты кадров:
import cv2
vid : cv2.VideoCapture = cv2.VideoCapture('rtsp://192.168.1.10/cam1/mpeg4')
def get_framerate(video: cv2.VideoCapture):
fps = video.get(cv2.CAP_PROP_FPS)
print('FPS is {0}'.format(fps))
get_framerate(vid)
- MacOS Каталина
- Python 3.7.4
1 ответ
Я надеюсь, что это поможет вам как-то. Это простой калькулятор, который берет cont
снимков и измеряет время начала и окончания. Затем с помощью правила трех я преобразовал его в fps
.
Связанный с вашим вторым вопросом, я прочитал здесь a> что это может быть из-за плохой установки. Кроме того, вы можете проверить, правильно ли работает ваша камера, напечатав переменную ret
. Если это true
, то вы сможете увидеть частоту кадров, если это false
, то вы можете получить непредсказуемый результат.
cv2.imshow()
и key = cv2.waitKey(1)
следует закомментировать, поскольку они добавляют пинг/задержку, что приводит к неправильным измерениям.
Я отправляю это как комментарий, потому что у меня недостаточно очков репутации.
img = cv2.VideoCapture('rtsp://192.168.1.10/cam1/mpeg4')
while True:
if cont == 50:
a = datetime.now() - start
b = (a.seconds * 10e6 + a.microseconds)
print((a.seconds * 10e6 + a.microseconds), "fps = ", (50 * 10e6)/ b)
break
ret, frame = img.read()
# Comment for best test
cv2.imshow('fer', frame)
key = cv2.waitKey(1)
if key == ord('q'):
break
cont+=1
img.release()
cv2.destroyAllWindows()`
Похожие вопросы
Связанные вопросы
Новые вопросы
opencv
OpenCV (Open Source Computer Vision) — это библиотека для компьютерного зрения в реальном времени. При использовании этого тега добавьте тег для конкретного языка (python, c++, ...), если это необходимо.