Python截取视频封面 发表于 2020-09-27 分类于 python 阅读次数: Python 实现截取指定帧作为视频封面近期项目中有一批视频需要将第一帧提取出来保存为图片,功能比较简单,核心是使用cv2库加载视频并逐帧读取,判断是需要保存的帧则保存。 1234# 加载视频video_capture = cv2.VideoCapture(file_path)# 逐帧读取cap_info, frame = video_capture.read() 完整代码如下,记录备忘: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import osimport cv2class video: def __init__(self): # 文件读取目录 存放视频文件的目录 self.load_dir = "" # 文件输出目录 self.save_dir = "./output/image/" # 视频文件后缀 self.video_ext = '.mp4' def save_image(self, image, file_name, num): file_name = file_name.replace(self.video_ext, "") save_path = self.save_dir + file_name + "_" + str(num) + '.jpg' res = cv2.imencode('.jpg', image)[1].tofile(save_path) # 使用imwrite直接保存中文文件名会乱码 # res = cv2.imwrite(save_path, image) print(res) print("保存文件: %s" % save_path) def load_video(self, file_name, cap): file_path = self.load_dir + file_name if os.path.exists(file_path) == False: print("文件不存在:%s" % file_path) return # 读取视频文件 video_capture = cv2.VideoCapture(file_path) # 读帧 cap_info, frame = video_capture.read() i = 0 while cap_info: if cap == i: self.save_image(frame, file_name, i) break cap_info, frame = video_capture.read() i = i + 1 def loop_load_video(self, cap): for filename in os.listdir(self.load_dir): self.load_video(filename, cap)if __name__ == '__main__': print("欢迎来到Video的世界!") tool = video() tool.loop_load_video(0)