对于我的项目,我需要处理高速率的帧,越多越好,但至少60帧是强制性的。我在Windows 10机器vía Anaconda中使用opencv 4.1.1,以防您需要了解平台。使用提供的代码,无论帧速率或分辨率如何,我都能获得30 fps
我的相机型号是ELP-USBFHD01M-L21,它能够:
所有这些帧速率都使用AMCAP软件进行了正确测试
如何达到所需的帧速率
代码:
import cv2
import time
import numpy as np
if __name__ == "__main__":
VIDEO_SOURCE = 0
CAMERA_CAPTURE_FPS = 60
CAMERA_CAPTURE_WIDTH = 1280
CAMERA_CAPTURE_HEIGHT = 720
frameCounter = 0
fps = 0
startTime = time.time()
cap = cv2.VideoCapture(VIDEO_SOURCE)
print("Parameters BEFORE assignment: ")
print("WIDTH: " + str(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print("HEIGHT: " + str(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print("FPS: " + str(cap.get(cv2.CAP_PROP_FPS)))
print("FOURCC: " + str(cap.get(cv2.CAP_PROP_FOURCC)))
# Noting seems to change adding or deleting this 2 lines
fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
cap.set(cv2.CAP_PROP_FOURCC, fourcc)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, CAMERA_CAPTURE_WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, CAMERA_CAPTURE_HEIGHT)
cap.set(cv2.CAP_PROP_FPS, CAMERA_CAPTURE_FPS)
print()
print("Parameters AFTER assignment: ")
print("WIDTH: " + str(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print("HEIGHT: " + str(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print("FPS: " + str(cap.get(cv2.CAP_PROP_FPS)))
print("FOURCC: " + str(cap.get(cv2.CAP_PROP_FOURCC)))
while True:
ret, frame = cap.read()
cv2.putText(frame, "FPS: " + str(fps), (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 1, cv2.LINE_AA)
frameCounter += 1
if time.time() - startTime >= 1:
fps = frameCounter
frameCounter = 0
startTime = time.time()
cv2.imshow("Camera stream", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
cap.release()
目前没有回答
相关问题 更多 >
编程相关推荐