在下面的代码中,我将视频分成帧。我每秒得到一个图像,但我不明白它是如何工作的,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>
get是VideoCapture类可用的方法。从OpenCV documentation,可以检查参数。每个宏都是视频的属性,具有相应的整数值。例如
在盖特。盖特(0)表示CAP_PROP_POS_MSEC,它反过来给出视频文件的当前位置(毫秒)或视频捕获时间戳。在
在盖特。盖特(1) 表示下一个要解码/捕获的帧的基于0的索引。在
同样,盖特。盖特(5) 表示CAP_PROP_FPS-视频的帧速率。在
但是,我认为编写这样的代码不是一个好的实践,应该使用
cv2.CAP_PROP_FPS而不是盖特。盖特(5) 等等。在
相关问题 更多 >
编程相关推荐