我使用以下代码从视频文件中提取特定帧。在这个例子中,我只是得到了中间框架:
import cv2
video_path = '/tmp/wonderwall.mp4'
vidcap = cv2.VideoCapture(video_path)
middle_frame = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT) / 2)
success, image = vidcap.read()
count = 0
success = True
while success:
success, image = vidcap.read()
if count == middle_frame:
temp_file = tempfile.NamedTemporaryFile(suffix='.jpg', delete=False)
cv2.imwrite(temp_file.name, image)
count += 1
但是,使用此方法,在非常大的文件中捕获中间帧可能需要一段时间。
Apparently,在较旧的cv
模块中,可以执行以下操作:
import cv
img = cv.QueryFrame(capture)
在cv2
中是否有类似的方式来获取视频文件中的特定帧,而不必迭代所有帧?