这段代码起因是这样的,我以为同学目前的研究方向是机械自动化方向,涉及一些编程知识,最近他导师想考考他的Python编程能力,让他用Python将一个视频切为一帧一张图片,于是让我帮他写了这段代码,并且最后开腾讯会议给他讲解了代码含义,讲完后他对Python产生了浓厚兴趣,随即让我为他推荐几本关于编程的书,本来我是有一本入门书的,可以送他,上次在北京搬家弄丢了。。。。
于是给了他书名推荐他去网上买了。
代码如下:
import cv2 # 导入opencv模块
import os #路径与文件 库
import time #计算时间
# video_path:视频路径
#save_path:保存切分后帧的路径
def video_split(video_path, save_path):
vc = cv2.VideoCapture(video_path)
# 一帧一帧的分割 需要几帧写几
c = 0
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
while rval:
rval, frame = vc.read()
# 每秒提取5帧图片
if c % 5 == 0:#模
cv2.imwrite(save_path + "/" + str('%06d' % c) + '.jpg', frame)
cv2.waitKey(1)
c = c + 1
if __name__ == '__main__':
video_DIR = "vedio_mp4" # 视频数据主目录
SAVE_DIR = "dc_pic" # 帧文件保存目录
start_time =time.time() #时间戳
print(list(os.walk(video_DIR)))
for parents, dirs, filenames in os.walk(video_DIR): #parents 路径 #dirs 子文件夹 #filenames 文件名 *.*
print("正在处理文件夹", parents)
save_path = SAVE_DIR
# 对每视频数据进行遍历
for file in filenames:
file_name = file.split(".")[0]
save_path_ = save_path + "/" + file_name
if not os.path.isdir(save_path_):
os.makedirs(save_path_)
video_path = parents + "/" + file
video_split(video_path, save_path_)
#
end_time = time.time()
print("Cost time", start_time - end_time)
当然,这份代码是在前人基础上修改的,我加了个os库自动生成文件夹这个功能。