通过使用 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())
等...
...然后设置目标分辨率
我的 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())
等...
...然后设置目标分辨率