代码运行,需要装有opencv模块,装opencv模块前需要装numpy模块。
此代码运行只需更改最后两个参数即可。
此代码除删除文件夹内容的函数来源于网上,其余皆自己编写。
本代码只为方便使用,变量命名因此随意了。
import cv2
import os
def del_file(filepath):
"""
删除某一目录下的所有文件或文件夹
:param filepath: 路径
:return:
"""
del_list = os.listdir(filepath)
for f in del_list:
file_path = os.path.join(filepath, f)
if os.path.isfile(file_path):
os.remove(file_path)
def video_to_images(fps,path):
cv = cv2.VideoCapture(path)
if(not cv.isOpened()):
print("\n打开视频失败!请检查视频路径是否正确\n")
exit(0)
if not os.path.exists("images/"):
os.mkdir("images/") # 创建文件夹
else:
del_file('images/') # 清空文件夹
order = 0 #序号
if fps == 0:
while True:
rval, frame = cv.read()
order = order + 1
if rval:
cv2.imwrite('./images/' + str(order) + '.jpg', frame) #图片保存位置以及命名方式
cv2.waitKey(1)
else:
break
else:
h = 0
while True:
h=h+1
rval, frame = cv.read()
if h == fps:
h = 0
order = order + 1
if rval:
cv2.imwrite('./images/' + str(order) + '.jpg', frame) #图片保存位置以及命名方式
cv2.waitKey(1)
else:
break
cv.release()
print('\nsave success!\n')
# 参数设置
fps = 0 # 隔多少帧取一张图 0表示全部取
path="tram_result.mp4" # 视频路径 比如 D:\\images\\tram_result.mp4 或者 D:/images/tram_result.mp4
if __name__ == '__main__':
video_to_images(fps,path)
# 会在代码的当前文件夹下 生成images文件夹 用于保存图片
# 如果有images文件夹,会清空文件夹!