繁体   English   中英

如何通过 OpenCV 和 Python 通过其索引从视频中获取帧?

[英]How to get frame from video by its index via OpenCV and Python?

我需要通过帧索引访问视频中的帧。 到目前为止,我使用了这样的代码:

video = cv2.VideoCapture(video_path)
status, frame = video.read()

代码读取第一帧。 如果我重复使用该代码,我将获得下一帧。 但是如何通过索引直接访问任何框架?

换句话说,如果我想要第二帧,如何直接访问第二帧而不调用read()两次?

使用带有CAP_PROP_POS_FRAMES属性 ID 的VideoCapture::set()来设置要读取的帧的位置。

myFrameNumber = 50
cap = cv2.VideoCapture("video.mp4")

# get total number of frames
totalFrames = cap.get(cv2.CAP_PROP_FRAME_COUNT)

# check for valid frame number
if myFrameNumber >= 0 & myFrameNumber <= totalFrames:
    # set frame position
    cap.set(cv2.CAP_PROP_POS_FRAMES,myFrameNumber)

while True:
    ret, frame = cap.read()
    cv2.imshow("Video", frame)
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()
import os folder= 'frames' os.mkdir(folder) import cv2 vidcap = cv2.VideoCapture('four.mp4') def getFrame(sec): vidcap.set(cv2.CAP_PROP_POS_MSEC,sec*1000) hasFrames,image = vidcap.read() if hasFrames: cv2.imwrite("image"+str(count)+".jpg", image) # save frame as JPG file return hasFrames sec = 0 frameRate = 0.5 #//it will capture image in each 0.5 second count=1 success = getFrame(sec) while success: count = count + 1 sec = sec + frameRate sec = round(sec, 2) success = getFrame(sec)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM