通过使用 cv2.VideoCapture 降低 fps

low fps by using cv2.VideoCapture

我的 FPB 低~5,我在不同的相机 logitech c270 和 logitech 9000 上检查了这段代码,情况相同。

我完成了关于关闭右侧灯等的所有提示

import urllib.request as urllib
import cv2
import numpy as np
import time

while True:

    # Use urllib to get the image and convert into a cv2 usable format
    cap = cv2.VideoCapture(0)

    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    hiegh = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    ret, frame = cap.read()


    # put the image on screen
    cv2.imshow('Webcam', frame)


    if cv2.waitKey(1) & 0xFF == 27:
        break

cap.release()        
cv2.destroyAllWindows()

我应该怎么做才能提高 FPS?

# Use urllib to get the image and convert into a cv2 usable format
cap = cv2.VideoCapture(0)

width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
hiegh = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

在运行时将这些行放在上面。

尝试降低分辨率。你可以试试 640x480。

示例:

cap.set(CV_CAP_PROP_FRAME_WIDTH, 640)
cap.set(CV_CAP_PROP_FRAME_WIDTH, 480)

您需要将此行向上移动,在您的获取循环之外

 cap = cv2.VideoCapture(0)

它只一次性初始化。

我知道我来晚了,但是,如果其他人遇到这个问题...

检查您使用的编解码器是否正确。在我使用 Logitech OrbiCam 的情况下,我必须将其设置为 MJPG:

对于 C++:

cv::VideoCapture camera;
camera.open(0);
auto codec = cv::VideoWriter::fourcc('M','J','P','G');
camera.set(cv::CAP_PROP_FOURCC, codec);

在Python中:

import cv2
camera = cv2.VideoCapture(0)
camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('m','j','p','g'))

对于 Kotlin:

var capture: VideoCapture = VideoCapture()
camera.open(deviceId)
val mjpg = VideoWriter.fourcc('M', 'J', 'P', 'G')
capture.set(Videoio.CAP_PROP_FOURCC, mjpg.toDouble())

等...

...然后设置目标分辨率