如何解决使用cv2在python中提取视频帧
我想将我的视频分成几帧。
我正在使用以下代码:
import cv2
import numpy as np
import os
# Playing video from file:
cap = cv2.VideoCapture('myvideo.mp4')
cap.set(cv2.CAP_PROP_FPS,5)
try:
if not os.path.exists('data'):
os.makedirs('data')
except OSError:
print ('Error: Creating directory of data')
currentFrame = 0
while(True):
# Capture frame-by-frame
ret,frame = cap.read()
# Saves image of the current frame in jpg file
name = './data/frame' + str(currentFrame) + '.jpg'
print ('Creating...' + name)
cv2.imwrite(name,frame)
# To stop duplicate images
currentFrame += 1
if not ret: break
# When everything done,release the capture
cap.release()
cv2.destroyAllWindows()
我已将 FPS = 5 并且“myvideo.mp4”的长度为 0:55 秒。所以,我希望有 55*5 = 275 帧,但是上面的代码给了我更多的帧并且它不会停止生成帧。代码有问题吗?
解决方法
如果你想要一个合适的帧率,你可以这样做
framerate = vid.get(5)
代替
cap.set(cv2.CAP_PROP_FPS,5)
这会给你准确的帧率
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。