
基于Opencv-python 实现视频按帧截取图片
发布日期:2021-05-07 13:15:32
浏览次数:34
分类:原创文章
本文共 3520 字,大约阅读时间需要 11 分钟。
采集到一些视频数据,需要将里面的视频按照指定帧截图。
参考了很多资料后,实现了自己的功能:
1.安装所需要的库:
pip3 install -i https://mirrors.aliyun.com/pypi/simple +库名
pip3 install -i https://mirrors.aliyun.com/pypi/simple opencv-python
2.编写代码,实现需求:
default--间隔的帧数 2.input/output--输入视频的路径、存放截取图片的路径 (将路径放入后面的‘ '中即可)前面加r可表示绝对路径
"""@File : deal_videos.py@Author: LZW@Date : 2021/01/15@Desc : 截取视频中的图像"""# 引入所需要的库import cv2import argparseimport osdef parse_args(num): """ Parse input arguments """ n = '' n = n + str(num) 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=100, type=int) # input为输入视频的路径 ,output为输出存放图片的路径 input = 'F:\西南医院视频(压缩版)\\' + n + '.avi' # 读取的文件目录 out = 'F:\output_videos\\' + n # 输出的文件目录 args = parser.parse_args(['--input', input, '--output', out]) return argsdef 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: breakif __name__ == '__main__': start = 71 end = 107 for i in range(start, end): args = parse_args(i) 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)
运行结果:
原文作者地址我忘记了,若原文作者看到可以告知我下。
原代码:
"""@Description 将视频按照指定帧切分成图片@Author LZW@CreateTime 2021/02/09 17:14@UpdateTime 2021/02/09 17:14@Version 1.0.0"""# 引入所需要的库import cv2import argparseimport osdef 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=100, type=int) # input为输入视频的路径 ,output为输出存放图片的路径 args = parser.parse_args(['--input', r'F:\西南医院视频(压缩版)\80.mp4', '--output', r'F:\output_videos\80']) return argsdef 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: breakif __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)
使用要修改的地方:
default--间隔的帧数 2.input/output--输入视频的路径、存放截取图片的路径 (将路径放入后面的‘ '中即可)前面加r可表示绝对路径
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月19日 06时41分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
阿里巴巴Json工具-Fastjson教程
2019-03-06
Spring Cloud Gateway - 快速开始
2019-03-06
Spring Security 实战干货:理解AuthenticationManager
2019-03-06
Java对象转JSON时如何动态的增删改查属性
2019-03-06
Python 面向对象进阶
2019-03-06
Linux常用统计命令之wc
2019-03-06
Git安装及使用以及连接GitHub方法详解
2019-03-06
docker容器与虚拟机的区别
2019-03-06
shell脚本里使用echo输出颜色
2019-03-06
Python2跟Python3的区别
2019-03-06
并发编程——IO模型详解
2019-03-06
Java之封装,继承,多态
2019-03-06
wait()与notify()
2019-03-06
使用js打印时去除页眉页脚
2019-03-06
Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)
2019-03-06
ORA-00904: "FILED_TYPE": 标识符无效
2019-03-06
数据仓库系列之维度建模
2019-03-06
Scala教程之:函数式的Scala
2019-03-06
java中DelayQueue的使用
2019-03-06
线程stop和Interrupt
2019-03-06