низкий FPS при использовании камеры Pymba и (1800U500 c) - PullRequest
0 голосов
/ 30 марта 2020

Когда я тестирую камеру (1800U500 c) с помощью программы просмотра vimba, я получаю 100+ кадров в секунду для полного разрешения. Когда я тестирую ту же камеру с помощью Pymba, я получаю только ~ 10 кадров в секунду Я знаю, что это не проблема времени экспозиции, так как я изменил это от 40 до 40 Кб с минимальным эффектом на fps. Что помогает с fps, так это запрашивать у камеры меньшее количество пикселей (например, 1200x1200 возвращается при 30 кадрах в секунду). Есть идеи как ускорить фпс?

from time import sleep
from pymba import Vimba
from _display_frame import display_frame
import time
import cv2

import threading

def camCapture(camera):
try:
camera.arm('SingleFrame')
while (True):
start_time = time.time() # start time of the loop
frame = camera.acquire_frame()
image = frame.buffer_data_numpy()

        cv2.imshow('ImageWindow', image)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        print("FPS: ", 1.0 / (time.time() - start_time))

except: 
    camera.disarm()
    camera.close()

if name == 'main':

with Vimba() as vimba:
    camera = vimba.camera(0)
    camera.open()
    featureAM = camera.feature('DeviceLinkThroughputLimitMode')
    value = featureAM.value
    featureAM.value = 'Off'

    feature = camera.feature('PixelFormat')
    value = feature.value
    feature.value = 'BGR8'

    featureH = camera.feature('Height')
    value = featureH.value
    featureH.value = 1944                           #default 1944   small 1146

    featureW = camera.feature('Width')
    value = featureW.value
    featureW.value = 2592                           #default 2592   small 2200


    featureGA = camera.feature('GainAuto')
    value = featureGA.value
    featureGA.value = 'Continuous'

    featureBWA = camera.feature('BalanceWhiteAuto')
    value = featureBWA.value
    featureBWA.value = 'Once'

    featureET = camera.feature('ExposureTime')
    value = featureET.value
    featureET.value = 4000                                           #default 4000

    capture_thread = threading.Thread(target=camCapture,args=(camera,))
    capture_thread.daemon = True
    capture_thread.start()


    try:
        while(True):
            time.sleep(4)
    except:
        camera.disarm()
        camera.close()

...