逐帧保存视频数据

import numpy as np
from glob import glob
from PIL import Image

import cv2

def video_to_pic():
    # 打开视频
    cap = cv2.VideoCapture(r"运动车辆检测跟踪原视频.mp4")

    # 获取帧数
    fps = cap.get(cv2.CAP_PROP_FPS)

    # 获取宽高
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    print("FPS: ", fps)
    print("width: ", width)
    print("height: ", height)

    # 读取第一帧
    flag, frame = cap.read()

    # 图片命名计数
    frameCount = 0

    while flag:
        # 读取每一帧,flag表示是否读取成功,frame为图片内容。
        fileName = "./image/image" + str(frameCount) + ".jpg"
        print(fileName)
        if flag is True:
            cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
        flag, frame = cap.read()
        frameCount += 1
    
    cap.release()

def load_video_data():
    x_source = []  # 定义一个空列表,用于保存数据集
    x_label = []
    for file in glob('./image/*'): # 获取文件夹名称
        # for file_label in glob(file +'/Label/*'): # # 获取文件夹中文件
        #     img = np.array(Image.open(file_label), dtype='float32') / 255
        #     x_label.append(img[150:406, 120:376]) #512*512裁成256
        img = np.array(Image.open(file), dtype='float32') / 255
        x_source.append(img)

    x_source = np.expand_dims(np.array(x_source), axis=3)  # 扩展维度,增加第4维
    # x_label = np.expand_dims(np.array(x_label), axis=3)  # 变为网络需要的输入维度(num, 256, 256, 1)
    np.random.seed(116)  # 设置相同的随机种子,确保数据匹配
    np.random.shuffle(x_source)  # 对第一维度进行乱序
    # np.random.seed(116)
    # np.random.shuffle(x_label)
    # print(len(x_source))
    print("end!")
    # 图片有899张,按7:3进行分配 训练集和测试集
    # return x_source[:629, :, :], x_label[:629, :, :], x_source[629:, :, :], x_label[629:, :, :]
    return x_source[:629, :, :], x_source[629:, :, :]

def save_video_data():
    # # .npy文件是numpy专用的二进制文件
    # # 保存.npy文件
    np.save("./data.npy", load_video_data())
    print("save .npy done")


if __name__ == '__main__':
    # video_to_pic()
    save_video_data()

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值