python+opencv实现视频抽帧示例代码


Posted in Python onJune 11, 2021

1、数据集简述:

       虽然有主流庞大的COCO、VOC数据集,但是科研人员仍需要特殊领域要求的数据集,所以采用人工实地采集的方式进行收集数据集图像;通过拍照收集图像过于繁琐,所以通常是将摄像头无规则的移动旋转以及远近拉缩,进而录制视频;再通过视频抽帧的方式得到大量的图像,再将这些图像进行人工标注处理。

        博主通过一个水下录制视频为例子,当这类图像在网上鲜有存在时,要求有关技术人员进行实拍采集,下图即为采集得到的视频。

python+opencv实现视频抽帧示例代码

        为了避免不符合项目要求的数据增强,博主要求技术人员在录制视频时最大程度地让摄像头进行移动、旋转以及远近调节等;这样抽帧后的图像更具有泛化性

2、代码介绍:

下面是采用以帧数为间隔的方法进行视频抽帧,博主个人认为这样子的方式调节间隔更加方便,更符合个人习惯。

import cv2
from PIL import Image
import numpy as np


cap = cv2.VideoCapture("D:/Download/ANMR0005.mp4")  # 获取视频对象
isOpened = cap.isOpened  # 判断是否打开
# 视频信息获取
fps = cap.get(cv2.CAP_PROP_FPS)

imageNum = 0
sum=0
timef=15  #隔15帧保存一张图片

while (isOpened):

    sum+=1

    (frameState, frame) = cap.read()  # 记录每帧及获取状态

    if frameState == True and (sum % timef==0):

        # 格式转变,BGRtoRGB
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 转变成Image
        frame = Image.fromarray(np.uint8(frame))

        frame = np.array(frame)

        # RGBtoBGR满足opencv显示格式
        frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

        imageNum = imageNum + 1
        fileName = 'D:/Download/video_image/image' + str(imageNum) + '.jpg'  # 存储路径
        cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
        print(fileName + " successfully write in")  # 输出存储状态

    elif frameState == False:
        break

print('finish!')
cap.release()

3、代码效果:

pycharm运行py文件后结果框显示的内容:

python+opencv实现视频抽帧示例代码

视频抽帧得到的图像保存至指定的文件夹:

python+opencv实现视频抽帧示例代码

抽帧得到的图片示例:

python+opencv实现视频抽帧示例代码 

4、相关说明: ①本代码依据录制视频、对opencv的理解以及大佬的项目代码灵感进行编写;

大佬的项目代码地址

②本数据集属于私人闭源,不公开。

到此这篇关于python+opencv实现视频抽帧的文章就介绍到这了,更多相关python opencv视频抽帧内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python函数的周期性执行实现方法
Aug 13 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
Django框架实现的简单分页功能示例
Dec 04 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
python 读取串口数据的示例
Nov 09 Python
用Python将GIF动图分解成多张静态图片
OpenCV-Python 实现两张图片自动拼接成全景图
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
PyQt5结合QtDesigner实现文本框读写操作
Python中seaborn库之countplot的数据可视化使用
Python爬取某拍短视频
anaconda python3.8安装后降级
You might like
用PHP4访问Oracle815
2006/10/09 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
python怎么判断素数
2020/07/01 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
通用自荐信范文
2014/03/14 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书