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()
逐帧保存视频数据
最新推荐文章于 2023-10-26 10:06:54 发布