Opencv: тот же код захвата дает низкий FPS на ноутбуке высокого класса и высокий FPS на TX1 - PullRequest
0 голосов
/ 23 мая 2018

Я неожиданно получаю очень низкий FPS (~ 16 к / с) при захвате с внутренней веб-камеры (1280x720 @ 30 к / с) недавнего Dell XPS 9560.

Это тривиальный код, который я использую (python3, OpenCV 3.4.0)

import cv2, time

cam = cv2.VideoCapture(0)
n_frames = 0
execution_time = 0

while True:

    t_start = time.time()
    rv, frame = cam.read()
    n_frames+=1

    if rv:
        #also tried to comment imshow. Same FPS.
        cv2.imshow('window', frame)
        if cv2.waitKey(1) >= 0:
            break
        pass
    else:
        print('Cannot read Frame')

    t_end = time.time()

    execution_time += (t_end-t_start)*1000

    if execution_time > 10000:
        print ('avg FPS in 10 seconds: %.2f' % (n_frames*1000/execution_time))
        n_frames = 0
        execution_time = 0

Я пытался написать ту же самую простую программу на C ++ и получил тот же результат, тот же ~ 16 FPS.

Иногда и C ++, иПрограмма Python может генерировать более высокий FPS за более короткое время.

Наблюдая за использованием процессора с помощью i7z, я мог видеть, что все 4 ядра работают на очень низкой частоте, близкой к минимальной, в большинстве случаев со случайными скачками, которые, казалось, не сильно влияют насредний FPS.

Затем я перенес точно такой же код на Jetson TX1.Для тех, кто этого не знает, это система на чипе, основанная на ARM, на которой установлена ​​выделенная Ubuntu 16.10.Он подключен к камере USB 2.0, 1920x1080 при 25 к / с.

Нет необходимости говорить, что я получил ровно 25 FPS, как и ожидалось.

Кто-нибудь может объяснить это поведение?Это связано с различиями на уровне операционной системы?

Как получить полный FPS в любом случае?

Спасибо за помощь

РЕДАКТИРОВАТЬ: после VTT комментарий, я подключил одну и ту же внешнюю (предположительно 30 к / с) USB-камеру к обеим системам, и я получил 15 FPS на обеих.Это указывает на дерьмовые камеры / USB-автобус.Мне нужно будет разобрать внутреннюю камеру устройства jetson и подключить его к ноутбуку, чтобы еще раз проверить, связано ли это с камерой.

1 Ответ

0 голосов
/ 18 октября 2018

Я отбросил эту проблему из-за разочарования, только чтобы найти ее ответ несколько дней назад, когда я гонялся за другим ... Мне просто нужно было включить свет, чтобы найти ответ!

Оказывается,моя камера автоматически понижает свой FPS при плохом освещении.Когда вы думаете об этом, это, безусловно, может произойти, когда время экспозиции должно быть больше, чем 1/30 с.

Итак, в конце концов, похоже, что 30 кадров в секунду следует задавать как «Максимальный кадр / с = 30».Но это может быть и будет ниже, чем это.Очень раздражает, на мой взгляд, очень плохо, что мне пришлось выучить это трудным путем.

...