在利用深度学习进行图像分类时,往往因为图像数据难以获取而令人头疼。如果一张张的收集,耗时又耗力。而利用opencv提供把视屏中的每一帧图像分解出来的方法可以很有效的缓解这个问题。
读取文件夹下所有视频并分解成图像的具体步骤如下:
- 导入cv2
- 逐个打开文件夹下的视频
- 判断视频是否成功被打开,如果成功,读取视频的一帧图像;否则,不执行后续操作
- 判断图像是否读取成功,成功则保存图像
- 继续读取下一帧图像,直至当前视频读取完毕
import cv2
import os
video_path = './video' # 视频所在路径
image_path = './image' # 保存图像的路径
i = 1 # 图片标号
for filename in os.listdir(video_path): # 读取视频文件
video = cv2.VideoCapture(path + '/' + filename) # 打开视频
is_opened = video.isOpened() # 视频是否成功打开
if is_opened:
flag, frame = video.read() # 如何视频成功打开,读取一帧图像
if flag: # 读取成功,则保存图像
image_name = 'image' + str(i) + '.jpg'
if not os.path.exists(image_path): # 如果文件夹不存在,则创建一个文件夹
os.mkdir(image_path)
cv2.imwrite(os.path.join(image_path, image_name) , frame) # 写入图片
else:
flag = False
while(flag):
i += 1
flag, frame = video.read() # 读取下一帧图像
if flag: # 读取成功则保存
image_name = 'image' + str(i) + '.jpg'
cv2.imwrite(os.path.join(image_path, image_name) , frame) # 写入图片
else: # 否则标志该视频读取完毕,结束该视频的操作
flag = False
print('end!') # 打印结束标志