У меня есть поток 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
0
user189198 28 Окт 2019 в 01:13

1 ответ

Я надеюсь, что это поможет вам как-то. Это простой калькулятор, который берет cont снимков и измеряет время начала и окончания. Затем с помощью правила трех я преобразовал его в fps.

Связанный с вашим вторым вопросом, я прочитал здесь что это может быть из-за плохой установки. Кроме того, вы можете проверить, правильно ли работает ваша камера, напечатав переменную 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()`
0
Dragos Makovei 28 Окт 2019 в 01:45