Когда я тестирую камеру (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()