1.捕获摄像头数据并保存
import cv2
def videocapture():
cap = cv2.VideoCapture(0)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
writer = cv2.VideoWriter("video_result.mp4", fourcc, fps, (width, height))
while cap.isOpened():
ret, frame = cap.read()
cv2.imshow('video', frame)
key = cv2.waitKey(24)
writer.write(frame)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
videocapture()
2.1 video2image 将视频文件转换为图片,默认间隔按照帧率存储
2.2 video2image_multi # 读取文件夹所有视频,每个视频按帧保存图像
import numpy as np
import cv2
import os
def video2image(video_dir, save_dir):
cap = cv2.VideoCapture(video_dir)
n = 1
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
i = 0
timeF = int(fps)
while cap.isOpened():
ret, frame = cap.read()
if ret is False:
break
if (n % timeF == 0):
i += 1
print('保存第 %s 张图像' % i)
save_image_dir = os.path.join(save_dir, '%s.jpg' % i)
print('save_image_dir: ', save_image_dir)
cv2.imwrite(save_image_dir, frame)
n = n + 1
cv2.waitKey(1)
cap.release()
def video2image_multi(video_path, save_path):
video_list = os.listdir(video_path)
for i in range(len(video_list)):
video_dir = os.path.join(video_path, video_list[i])
cap = cv2.VideoCapture(video_dir)
fps = cap.get(cv2.CAP_PROP_FPS)
save_num = 0
n = 1
timeF = int(fps)
while cap.isOpened():
ret, frame = cap.read()
if ret is False:
break
if (n % timeF == 0):
save_num += 1
save_image_dir = os.path.join(save_path, '%s_%s.jpg' % (i, save_num))
cv2.imwrite(save_image_dir, frame)
n = n + 1
cv2.waitKey(1)
cap.release()
print('读取第 %s 个视频完成 !!!' % i)
if __name__ == '__main__':
video2image(r'D:\zhouz\my_video\test_fall.avi', r'D:\zhouz\video2image')
参考链接