python+opencv实现视频抽帧示例代码
1、数据集简述:
虽然有主流庞大的COCO、VOC数据集,但是科研人员仍需要特殊领域要求的数据集,所以采用人工实地采集的方式进行收集数据集图像;通过拍照收集图像过于繁琐,所以通常是将摄像头无规则的移动旋转以及远近拉缩,进而录制视频;再通过视频抽帧的方式得到大量的图像,再将这些图像进行人工标注处理。
博主通过一个水下录制视频为例子,当这类图像在网上鲜有存在时,要求有关技术人员进行实拍采集,下图即为采集得到的视频。
为了避免不符合项目要求的数据增强,博主要求技术人员在录制视频时最大程度地让摄像头进行移动、旋转以及远近调节等;这样抽帧后的图像更具有泛化性。
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文件后结果框显示的内容:
视频抽帧得到的图像保存至指定的文件夹:
抽帧得到的图片示例:
4、相关说明: ①本代码依据录制视频、对opencv的理解以及大佬的项目代码灵感进行编写;
大佬的项目代码地址
②本数据集属于私人闭源,不公开。
到此这篇关于python+opencv实现视频抽帧的文章就介绍到这了,更多相关python opencv视频抽帧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python OpenCV视频截取并保存实现代码
这篇文章主要介绍了Python OpenCV视频截取并保存实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在图像处理之前,我们需要对拿到手的数据进行筛选,对于视频,我们需要从中截取我们需要的一段或几段 整体思路比较简单,通过设定截取视频的起止时间(帧数),可以将该时间段内的图像保存为新的视频 直接上代码 """ [函数名称] 截取视频 [参数] 输入参数 视频文件名称 [详细介绍] 输入不同时间段 进行截取拼接 [创
-
Python+OpenCV+pyQt5录制双目摄像头视频的实例
起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写一个.要是OpenCV+python.貌似很简单就能OK的事情,但是,我们的项目不是一般要展示给老师看嘛.谁愿意看一个没有界面的录制过程是吧~,最后会附上源代码~ 依赖的包 在这里,我直接把import的包写出来了各位可以进行对号入座,然后就能知道需要安装哪个包啦! import cv2 import numpy as np from PyQt5.QtWidge
-
Python OpenCV获取视频的方法
之前有文章,使用Android平台的OpenCV接入了视频,控制的目标是手机的摄像头,这是OpenCV的好处,使用OpenCV可以使用跨平台的接口实现相同的功能,减少了平台间移植的困难.正如本文后面,将使用类似的接口,从笔记本的摄像头获取视频,所以,尝试本文代码需要有一台有摄像头的电脑. 不过,需要说明的的是,OpenCV的强项在于图像相关的处理,而不是视频的编解码,所以,不要使用OpenCV做多余的事情,我们使用OpenCV接入视频或者图片的目的,是为了对视频或图片进行处理. 关于Python
-
使用Python opencv实现视频与图片的相互转换
因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/PycharmProjects/1/1/19.MOV") c=1 if vc.isOpened(): rval,frame=vc.read() else: rval=False while rval: rval,frame=vc.read() cv2.imwrite('/home/hqd/PycharmP
-
python+opencv打开摄像头,保存视频、拍照功能的实现方法
以下代码是保存视频 # coding:utf-8 import cv2 import sys reload(sys) sys.setdefaultencoding('utf8') cap = cv2.VideoCapture(0) cap.set(3,640) cap.set(4,480) cap.set(1, 10.0) #此处fourcc的在MAC上有效,如果视频保存为空,那么可以改一下这个参数试试, 也可以是-1 fourcc = cv2.cv.CV_FOURCC('m', 'p', '4
-
python opencv读mp4视频的实例
如下所示: #获得视频的格式 videoCapture = cv2.VideoCapture('/home/lw/3661.mp4') #获得码率及尺寸 fps = videoCapture.get(cv2.CAP_PROP_FPS) size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))) fNUMS = videoCapture.get(
-
使用python-opencv读取视频,计算视频总帧数及FPS的实现
如下所示: 1.计算总帧数 import os import cv2 video_cap = cv2.VideoCapture('ffmpeg_test.avi') frame_count = 0 all_frames = [] while(True): ret, frame = video_cap.read() if ret is False: break all_frames.append(frame) frame_count = frame_count + 1 # The value be
-
python+opencv实现视频抽帧示例代码
1.数据集简述: 虽然有主流庞大的COCO.VOC数据集,但是科研人员仍需要特殊领域要求的数据集,所以采用人工实地采集的方式进行收集数据集图像:通过拍照收集图像过于繁琐,所以通常是将摄像头无规则的移动旋转以及远近拉缩,进而录制视频:再通过视频抽帧的方式得到大量的图像,再将这些图像进行人工标注处理. 博主通过一个水下录制视频为例子,当这类图像在网上鲜有存在时,要求有关技术人员进行实拍采集,下图即为采集得到的视频. 为了避免不符合项目要求的数据增强,博主要求技术人员在录制视频时最大程度地让摄像头进行
-
Python+Opencv实现数字识别的示例代码
一.什么是数字识别? 所谓的数字识别,就是使用算法自动识别出图片中的数字.具体的效果如下图所示: 上图展示了算法的处理效果,算法能够自动的识别到LCD屏幕上面的数字,这在现实场景中具有很大的实际应用价值.下面我们将对它的实现细节进行详细解析. 二.如何实现数字识别? 对于数字识别这个任务而言,它并不是一个新的研究方向,很久之前就有很多的学者们在关注这个问题,并提出了一些可行的解决方案,本小节我们将对这些方案进行简单的总结. 方案一:使用现成的OCR技术. OCR,即文字识别,它是一个比较
-
Python+OpenCV实现角度测量的示例代码
本文介绍如何使用python语言实现角度测量,程序包括鼠标选点.直线斜率计算.角度计算三个子程序和一个主程序.最终实现效果:在图片上用鼠标确认三点,程序将会显示由此三点确定的角度,如下图所示. 1.鼠标选点 # -*- coding: utf-8 -*- import cv2 path = "picture_mqa\\angle_measure.bmp" img = cv2.imread(path) pointsList = [] def mousePoints(event,x,y,f
-
Python OpenCV实现视频分帧
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 # coding=utf-8 import os import cv2 videos_src_path = "/home/wgp/视频/" video_formats = [".MP4", ".MOV"] frames_save_path = "/home/wgp/视频/" width = 320 height = 240 time_inte
-
Python + OpenCV 实现LBP特征提取的示例代码
背景 看了些许的纹理特征提取的paper,想自己实现其中部分算法,看看特征提取之后的效果是怎样 运行环境 Mac OS Python3.0 Anaconda3(集成了很多包,浏览器界面编程,清爽) 步骤 导入包 from skimage.transform import rotate from skimage.feature import local_binary_pattern from skimage import data, io,data_dir,filters, feature fro
-
Python OpenCV实现视频追踪
本文实例为大家分享了Python OpenCV实现视频追踪的具体代码,供大家参考,具体内容如下 1. MeanShift 假设有一堆点集和一个圆形的小窗口.现在需要将此窗口移动到具有最高点集密度的区域,如下图: 第一个窗口C1是蓝色圆圈的区域.蓝色环的中心用蓝色矩形标记并命名为 C1_o.窗口中所有点的点集形成的质心在蓝色圆形点C1_r.显然,质心和环的质心不重合.移动蓝色窗口,使质心与先前获得的质心重合.在新移动的圆环的区域内再次找到圆环包围的点集的质心,然后再次移动.通常,形心和质心不重合.
-
Opencv python 图片生成视频的方法示例
本文主要介绍了Opencv图片生成视频,分享给大家,具体如下: 生成视频 import random as rd import cv2 as cv import numpy as np # 保存视频 class RecordMovie(object): def __init__(self, img_width, img_height): self.video_writer = None # 视频对象 self.is_end = False # 结束保存视频 self.img_width = im
-
python+opencv实现的简单人脸识别代码示例
# 源码如下: #!/usr/bin/env python #coding=utf-8 import os from PIL import Image, ImageDraw import cv def detect_object(image): '''检测图片,获取人脸在图片中的坐标''' grayscale = cv.CreateImage((image.width, image.height), 8, 1) cv.CvtColor(image, grayscale, cv.CV_BGR2GR
-
javacv视频抽帧的实现过程详解(附代码)
视频抽帧可以做一些处理,比如水印,去水印等操作,然后再合成视频.下面直接上代码: 引入maven步骤看javacv去水印的文章 这里直接上关键操作: /** * 视频文件指定时间段的帧截取 * @param file * @param start * @param end */ public static List<File> videoIntercept(File file, Integer start, Integer end) { Frame frame = null; List<
-
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
安装 官网下载 http://ffmpeg.org/ 选择需要的版本 在这个网址下载ffmpeg,https://github.com/BtbN/FFmpeg-Builds/releases 将解压后得到的以下几个文件放置在E:\FFmpeg下 环境变量 此电脑--属性--高级系统设置--环境变量 在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填写 再将%FFMPEG_HOME%以及%FFMPEG_HOME%\bin写入系统变量的Path中 然后一路确定即可 验证 win+R,cmd
随机推荐
- hive函数简介
- Oracle LogMiner的使用实例代码
- ASP.NET显示渐变图片实现方法
- PHP strcmp()和strcasecmp()的区别实例
- mysql delete 多表连接删除功能
- ipv6实现udp编程示例
- H5移动端适配 Flexible方案
- 将HTMLCollection/NodeList/伪数组转换成数组的实现方法
- easyui datagrid 键盘上下控制选中行示例
- 解析PHP 使用curl提交json格式数据
- c# 代理模式
- Winform让DataGridView左侧显示图片
- 央视春晚新节目单曝光 方言小品《钓鱼》被拿下
- Python中pygal绘制雷达图代码分享
- 微信小程序使用input组件实现密码框功能【附源码下载】
- Vue.js 2.0和Cordova开发webApp环境搭建方法
- 易语言取时间间隔方法详解
- 详解ubuntu14.04搭建(迁移)hustoj记录
- Spring Cloud微服务架构的构建:分布式配置中心(加密解密功能)
- 如何通过Java添加水印到Word文档