使用cv2.VideoCapture降低fps

时间:2019-01-18 08:03:22

标签: python opencv camera frame-rate

我的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?

4 个答案:

答案 0 :(得分:2)

# 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))

将这些行放在while函数上方。

答案 1 :(得分:2)

您需要将此行向上移动,外部获取循环:

 cap = cv2.VideoCapture(0)

它仅进行一次 初始化。

答案 2 :(得分:1)

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

示例:

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

答案 3 :(得分: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())

等...

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