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