import os
import cv2
import shutil
from PIL import Image
import datetime
# 将视频拆分为图片
def splitFrames(video_dir_path):
'''
:param video_dir_path: 视频所在的目录
:return:
'''
start = datetime.datetime.now()
print('开始时间:', start)
for index, i in enumerate(os.listdir(video_dir_path)):
if i.endswith('.mp4'):
video_full_path = os.path.join(video_dir_path, i)
cap = cv2.VideoCapture(video_full_path)
num = 0
video_name_1 = i.split('.')[0]
os.mkdir(video_dir_path + '/' + video_name_1)
while True:
ret, data = cap.read()
if not ret:
break
img = Image.fromarray(cv2.cvtColor(data, cv2.COLOR_BGR2GRAY)) # 重建图像 灰度
name = video_name_1 + "_" + str(num) + ".png"
img_dir_path = video_dir_path + '/' + video_name_1
img.save(os.path.join(img_dir_path, name)) # 保存当前帧的图像
num = num + 1
cap.release()
end = datetime.datetime.now()
print("视频拆分结束!", end)
print((end - start).seconds)
# 将拆分后的视频文件移动到某个文件夹中放到一起
def move_from_dir_to_path(old_dir_path, new_dir_path):
'''
:param old_dir_path: 旧的视频拆分后的大文件夹
:param new_dir_path: 目标文件夹
:return:
'''
for i in os.listdir(old_dir_path):
if i.startswith('.'):
continue
if i.endswith('.mp4'):
continue
dir_path = os.path.join(old_dir_path, i)
dir_li = os.listdir(dir_path)
for j in dir_li:
shutil.move(os.path.join(dir_path, j), new_dir_path)
OpenCV将视频拆分为为图片
最新推荐文章于 2023-10-26 17:25:51 发布