微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用cv2在python中提取视频帧

如何解决使用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 举报,一经查实,本站将立刻删除。