python 读取多视频及截取视频中的帧

将工程下一个文件夹的所有视频源按顺序读取出来,并截取各视频中同一时间点的帧,将各帧以图像的形式按顺序储存好,方便后续处理。
使用python编写,用到opencv库和os库。

关键函数:
1、cv2.VideoCapture():读取视频文件
2、cv2.isOpened():判断视频文件是否读取成功
3、vc.get(cv2.CAP_PROP_FPS):获取视频的帧率,即一秒钟该视频播放多少帧
4、vc.get(cv2.CAP_PROP_FRAME_WIDTH)),vc.get(cv2.CAP_PROP_FRAME_HEIGHT):视频的大小
5、vc.get(cv2.CAP_PROP_FRAME_COUNT):视频的总时间,有多少帧

# 标定后的拼接的预处理,获取各视频源,截取同一时间点的帧,并将这些图像按顺序存储好
import cv2
import os.path

filepath = './videos'
pathDir = os.listdir(filepath)

a = 1
for allDir in pathDir:
    videopath = r'./videos/'+allDir
    print("videospath:", videopath)

    vc = cv2.VideoCapture(videopath)
    c = 1

    if vc.isOpened():
        success, frame = vc.read()
        print(True)
    else:
        success = False
        print(False)

    fps = vc.get(cv2.CAP_PROP_FPS)
    size = (int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)),
            int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    times = vc.get(cv2.CAP_PROP_FRAME_COUNT)
    print("fps", fps)
    print("size", size)
    print("times", times)

    while success:
        success, frame = vc.read()
        params = []
        params.append(1)
        if (c == 500):
            cv2.imwrite('./calibrated/'+str(a)+'.jpg', frame, params)
            a = a + 1
            break
        c = c + 1
        cv2.waitKey(1)
    vc.release()

这个程序是读取视频中的第五百帧,并储存在电脑中。

猜你喜欢

转载自blog.csdn.net/Wadewhl/article/details/111995296