进行AI训练时 经常需要将拍摄的视频转成图片进行标注训练,为了方便视频转化图片,写了下面代码 可以进行多个视频转化文件。
第15行和26行记得改成自己的文件夹名和文件名
import cv2
import os
#多视频转换图片
video_path = r'#/' # 视频存放文件夹地址
output_path = r'#/' # 输出文件夹,记得改文件夹名!!!!
interval = 5 # 每间隔5帧取一张图片
if __name__ == '__main__':
num = 1
videos_list = os.listdir(video_path)
print(videos_list)
for path in videos_list:
save_dir = ''#重置文件夹名
vid = cv2.VideoCapture(video_path + path)
save_dir = output_path + path[:4] + '_' + path[14:20] # 文件名 名字记得改!!!!
if not os.path.exists(save_dir): #判断文件夹是否存在 存在则跳过创建
os.mkdir(save_dir) #创建对应视频存放文件夹
#num = 1 #如果想不同的视频重新计数 开启这个
while vid.isOpened():
is_read, frame = vid.read()
if is_read:
if num % interval == 1:
file_name = '%08d' % num
# cv2.imwrite(save_dir +'/'+ path[:4] + '_'+ path[14:20] + '_' +str(file_name) + '.jpg', frame)
img_name = path[:4] + '_'+ path[14:20] + '_' +str(file_name) + '.jpg' #创建的文件的名称 file_name会累加 记得自己改名!!!!
cv2.imwrite(os.path.join(save_dir ,img_name), frame)
#创建成功输出文件绝对路径
print(save_dir +'/'+ img_name)
# 00000111.jpg 代表第111帧
cv2.waitKey(1)
num += 1
else:
break