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)
posted @   水木清扬  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示