get()的作用是什么?如何调整帧速率?

2024-05-19 15:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我将视频分成帧。我每秒得到一个图像,但我不明白它是如何工作的,while循环是怎么回事,get()的函数是什么。如果有人能解释一下,我将不胜感激

<code>
import cv2
import math

videoFile = "test3.avi"
imagesFolder = "D:\Video Frames"
cap = cv2.VideoCapture(videoFile)
frameRate = cap.get(5) #frame rate
while(cap.isOpened()):
    frameId = cap.get(1) #current frame number
    ret, frame = cap.read()
    if (ret != True):
        break
    if (frameId % math.floor(frameRate) == 0):
        filename = imagesFolder + "/image_" +  str(int(frameId)) + ".jpg"
        cv2.imwrite(filename, frame)
cap.release()
print ("Done!")
<\code>

Tags: importgetifcodemathfilenamecv2frame
1条回答
网友
1楼 · 发布于 2024-05-19 15:54:03

get是VideoCapture类可用的方法。从OpenCV documentation,可以检查参数。每个宏都是视频的属性,具有相应的整数值。例如

在盖特。盖特(0)表示CAP_PROP_POS_MSEC,它反过来给出视频文件的当前位置(毫秒)或视频捕获时间戳。在

在盖特。盖特(1) 表示下一个要解码/捕获的帧的基于0的索引。在

同样,盖特。盖特(5) 表示CAP_PROP_FPS-视频的帧速率。在

但是,我认为编写这样的代码不是一个好的实践,应该使用

cv2.CAP_PROP_FPS而不是盖特。盖特(5) 等等。在

相关问题 更多 >