python--oepncv-->>>>>>>>>>>>>>将视频剪辑成图片程序

import cv2
import argparse
import os


def parse_args():
"""
Parse input arguments
"""
parser = argparse.ArgumentParser(description='Process pic')
parser.add_argument('--input', help='video to process', dest='input', default=None, type=str)
parser.add_argument('--output', help='pic to store', dest='output', default=None, type=str)
# default为间隔多少帧截取一张图片
parser.add_argument('--skip_frame', dest='skip_frame', help='skip number of video', default=50, type=int)
# input为输入视频的路径 ,output为输出存放图片的路径
args = parser.parse_args(['--input', r'/home/firefly/duchao/video/车厢4-摄像头6-192.168.1.46-20190410080000.mp4', r'--output', '/home/firefly/duchao/video/images/'])
return args


def process_video(i_video, o_video, num):
cap = cv2.VideoCapture(i_video)
num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
expand_name = '.jpg'
if not cap.isOpened():
print("Please check the path.")
cnt = 0
count = 0
while 1:
ret, frame = cap.read()
cnt += 1
# how
# many
# frame
# to
# cut
if cnt % num == 0:
count += 1
cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)

if not ret:
break


if __name__ == '__main__':
args = parse_args()
if not os.path.exists(args.output):
os.makedirs(args.output)
print('Called with args:')
print(args)
process_video(args.input, args.output, args.skip_frame)

#将批量视频转换成批量图片并将其各自保存至视频文件名的文件中:

import cv2
import argparse
import os

def listDir(rootDir, image_list, endwith1):
files = os.listdir(rootDir)
for filename in os.listdir(rootDir):
pathname = os.path.join(rootDir, filename)
if os.path.isfile(pathname):
if pathname.split(".")[-1] in [endwith1]:
image_list.append(pathname)
else:
listDir(pathname ,image_list,endwith1)


def process_video(i_video, o_video, num):
cap = cv2.VideoCapture(i_video)
num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
expand_name = '.jpg'
if not cap.isOpened():
print("Please check the path.")
cnt = 0
count = 0
while 1:
ret, frame = cap.read()
cnt += 1
# how
# many
# frame
# to
# cut
if cnt % num == 0:
count += 1
cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)

if not ret:
break


if __name__ == '__main__':
vidios_dir = "D:/BaiduNetdiskDownload/20201214/"
save_dir = "D:/BaiduNetdiskDownload/20201214(images)/"

vidio_list = []
listDir(vidios_dir, vidio_list, "mkv")
skip_frame = 60


for video_path in vidio_list:
save_root = os.path.join(os.path.dirname(save_dir), os.path.basename(video_path).split('.')[0])
if not os.path.exists(save_root):
os.makedirs(save_root)
process_video(video_path, save_root, skip_frame)
import cv2
import argparse
import os

def listDir(rootDir, image_list, endwith1):
files = os.listdir(rootDir)
for filename in os.listdir(rootDir):
pathname = os.path.join(rootDir, filename)
if os.path.isfile(pathname):
if pathname.split(".")[-1] in [endwith1]:
image_list.append(pathname)
else:
listDir(pathname ,image_list,endwith1)


def process_video(i_video, o_video, num):
cap = cv2.VideoCapture(i_video)
num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
expand_name = '.jpg'
if not cap.isOpened():
print("Please check the path.")
cnt = 0
count = 0
while 1:
ret, frame = cap.read()
cnt += 1
# how
# many
# frame
# to
# cut
if cnt % num == 0:
count += 1
cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)

if not ret:
break


if __name__ == '__main__':
vidios_dir = "D:/BaiduNetdiskDownload/20201214/"
save_dir = "D:/BaiduNetdiskDownload/20201214(images)/"

vidio_list = []
listDir(vidios_dir, vidio_list, "mkv")
skip_frame = 60


for video_path in vidio_list:
save_root = os.path.join(os.path.dirname(save_dir), os.path.basename(video_path).split('.')[0])
if not os.path.exists(save_root):
os.makedirs(save_root)
process_video(video_path, save_root, skip_frame)
原文地址:https://www.cnblogs.com/shuimuqingyang/p/14149956.html