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两个整数相除得到浮点数值的方法
Mar 18 Python
在Linux下调试Python代码的各种方法
Apr 17 Python
Python3处理文件中每个词的方法
May 22 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
python调用OpenCV实现人脸识别功能
May 25 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python ---lambda匿名函数介绍
Mar 13 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
Python列表如何更新值
May 27 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
Spy++的使用方法及下载教程
Jan 29 Python
用Python将GIF动图分解成多张静态图片
OpenCV-Python 实现两张图片自动拼接成全景图
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
PyQt5结合QtDesigner实现文本框读写操作
Python中seaborn库之countplot的数据可视化使用
Python爬取某拍短视频
anaconda python3.8安装后降级
You might like
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python实现简单五子棋游戏
2019/06/18 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
python3中编码获取网页的实例方法
2020/11/16 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
日语翻译个人求职的自我评价
2013/10/14 职场文书
校领导推荐信
2013/11/01 职场文书
趣味比赛活动方案
2014/02/15 职场文书
运动会通讯稿150字
2014/02/15 职场文书
植树节标语
2014/06/27 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
毕业证代领委托书
2014/09/26 职场文书
Python中文纠错的简单实现
2021/07/07 Python
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
Mysql 文件配置解析介绍
2022/05/06 MySQL