热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Imageio和CV2抽视频帧性能比较

最近需要用python对视频进行抽帧处理,网上给出的主要做法是两种,即调用imgeio或cv2的相关方法。两者之间性能差异如何,本文通过抽

最近需要用python对视频进行抽帧处理,网上给出的主要做法是两种,即调用imgeio或cv2的相关方法。
两者之间性能差异如何,本文通过抽取指定指定帧(第15帧)的demo进行测试对比。上诉两种方法都能实现,贴上代码如下:



文章目录

  • 前言
  • 一、导入库
  • 二、ImageIO
  • 三、CV2
  • 四、控制台结果




前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。



提示:以下是本篇文章正文内容,下面案例可供参考


一、导入库

代码如下(示例):

import cv2
import time
import matplotlib.pyplot as plt
import imageio
import skimage
import numpy as np

二、ImageIO

代码如下(示例):

position = [1, 5, 10, 15, 20, 25, 30] # 所要抽取帧的索引
imageio_start = time.time() # imgeio方法的时间计算
vid = imageio.get_reader("test.mp4", 'ffmpeg')
length = len(position)
frames2 = []
for i, img in enumerate(vid):if i in position: # 抽取指定帧image2 = skimage.img_as_float(img).astype(np.float32) # 转换为numpy数组frames2.append(image2)# plt.figure(0)# plt.imshow(image2)# plt.show()if len(frames2) == length:break
print('Time of imageio: ', time.time()-imageio_start)

三、CV2

代码如下(示例):

cv2_start = time.time() # 计算cv2花费的时间
capture = cv2.VideoCapture("963861351.mp4")
frames = []
for i in position:capture.set(propId=cv2.CAP_PROP_POS_FRAMES, value=i) # 跳到指定帧hasframe, image1 = capture.read()frames.append(image1) # image1就是numpy数组# image1 = image1[:, :, :: -1] # 为了与imageio方法显示一致# plt.figure(0)# plt.imshow(image1)# plt.show()
print('Time of cv2: ', time.time()-cv2_start)

四、控制台结果

Time of imageio: 0.5045185089111328
Time of cv2: 0.11601471900939941

补充:结果很明显,按照我的需求,cv2速度比imageio快很多。但是也有可能是我没有找对imageio更快的直接取指定帧的方法,而是用for循环去遍历vid,如果有小伙伴知道也请告诉我。另外,在cv2显示图片前加了image1 = image1[:, :, :: -1],是因为cv2是以(BGR)的顺序存储图像数据的,而一般我们所看到的图片和视频都是以(RGB)顺序存储,所以直接显示色调会不同。如下三张图分别是视频封面图,imageio显示图,cv2未加转换语句的直接显示图。
在这里插入图片描述

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「哈士奇的布偶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bpp94_github/article/details/84823536


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
author-avatar
朝阳又起风云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有