如何使用OpenCV相机捕获设置帧率

oymdgrw7  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(316)

我如何设置捕获帧率,使用Python中的OpenCV?这是我的代码,但结果帧率小于要求的30fps。此外,视频质量非常差。

import cv
cv.NamedWindow ('CamShiftDemo', 1)
device = -1
cap = cv.CaptureFromCAM(device)
size = (640,480)
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FPS,30)
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH, size[0])
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT, size[1])
while True:
    frame = cv.QueryFrame(cap)
    cv.ShowImage('CamShiftDemo', frame)
    cv.WaitKey(10)
wfauudbj

wfauudbj1#

您受到硬件的限制,即:
1.您相机的捕获能力,以及
1.计算机的系统资源。
如果其中任何一个都不能处理请求的捕获参数(在您的情况下为640 x480分辨率,30 fps),那么您就不走运了。给予OpenCV * 的参数只是建议 * -它会尽可能地匹配它们。
你用的是什么型号的相机?我会先看看型号规格,看看他们是否宣传了你想要的参数。

tp5buhyn

tp5buhyn2#

这个选项是通过捕获的object set()和get()函数来操作的:https://docs.opencv.org/4.x/d8/dfe/classcv_1_1VideoCapture.html#a8c6d8c2d37505b5ca61ffd4bb54e9a7c使用适当的Python VideoCapturePropertieshttps://docs.opencv.org/4.x/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d
所以你要做的是:

self.capture = cv2.VideoCapture(0)
    size = (640,480)
    self.capture.set(cv2.CAP_PROP_FPS,30)
    self.capture.set(cv2.CAP_PROP_FRAME_WIDTH, size[0])
    self.capture.set(cv2.CAP_PROP_FRAME_HEIGHT, size[1])

相关问题