首页 > 编程语言 >python 两种速度浏览视频

python 两种速度浏览视频

时间:2023-04-08 16:23:23浏览次数:42  
标签:视频 fps 浏览 python frame cv2 video FPS import

# import the necessary packages
from imutils.video import FPS
import numpy as np
import argparse
import imutils
import cv2
# 构造参数解析器并解析参数
ap = argparse.ArgumentParser()
# 解析我们的命令行参数。对于这个脚本,我们只需要一个开关 --video ,它是我们输入视频文件的路径。
ap.add_argument("-v", "--video", required=True,
    help="path to input video file")
args = vars(ap.parse_args())
# 打开一个指向视频流的指针,并启动FPS定时器
stream = cv2.VideoCapture(args["video"])
fps = FPS().start()  # 启动一个我们可以用来测量 FPS 的计时器

# 循环视频文件流中的帧
while True:
    # 从线程视频文件流中抓取帧
    (grabbed, frame) = stream.read()
    # 如果帧没有被抓取,那么我们已经到达了流的末尾
    if not grabbed:
        break
    # 调整帧大小并将其转换为灰度(同时仍保留 3 个通道)
    frame = imutils.resize(frame, width=450)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame = np.dstack([frame, frame, frame])
    # 在图像中显示一段文本(这样我们就可以公平地对快速方法进行基准测试)
    cv2.putText(frame, "Slow Method", (10, 30),
        cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)    
    # 显示帧并更新 FPS 计数器
    cv2.imshow("Frame", frame)
    cv2.waitKey(1)
    fps.update()

# 停止定时器,显示FPS信息
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
# 做一些清理工作
stream.release()
cv2.destroyAllWindows()
# 导入必要的包
from imutils.video import FileVideoStream
from imutils.video import FPS
import numpy as np
import argparse
import imutils
import time
import cv2
# 构造参数解析并解析参数
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", required=True,
    help="path to input video file")
args = vars(ap.parse_args())
# 启动文件视频流线程并允许缓冲区开始填充
print("[INFO] starting video file thread...")
fvs = FileVideoStream(args["video"]).start()
time.sleep(1.0)
# 启动 FPS 计时器
fps = FPS().start()

# 循环播放视频文件流中的帧
while fvs.more():
    # 从线程视频文件流中抓取帧,调整大小,并将其转换为灰度(同时仍保留 3 个通道)
    frame = fvs.read()
    try:
        frame = imutils.resize(frame, width=450)
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        frame = np.dstack([frame, frame, frame])
        # 在frame上显示队列的大小
        cv2.putText(frame, "Queue Size: {}".format(fvs.Q.qsize()),
                (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)    
        # 显示帧并更新 FPS 计数器
        cv2.imshow("Frame", frame)
        cv2.waitKey(1)
        fps.update()
    except:
        pass

# 停止计时器并显示 FPS 信息
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
# 做一些清理工作
cv2.destroyAllWindows()
fvs.stop()

使用方法:

D:\Python37>python jian2.py --video 1/11.mp4
[INFO] starting video file thread...
[INFO] elasped time: 79.63
[INFO] approx. FPS: 199.49

D:\Python37>python jian2.py --video D:\C理论\ti\01060004.mp4
[INFO] starting video file thread...

标签:视频,fps,浏览,python,frame,cv2,video,FPS,import
From: https://www.cnblogs.com/xkdn/p/17298716.html

相关文章

  • Python 进阶指南(编程轻松进阶):二、环境配置和命令行
    原文:http://inventwithpython.com/beyond/chapter2.html环境配置是配置你的计算机环境,以便你写代码的过程。这包括安装任何必要的工具,配置它们,以及处理安装过程中的任何问题。没有一键配置这种傻瓜式操作过程,因为每个人都有一台不同的计算机,不同的操作系统、不同操作系统版本......
  • Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码
    原文:http://inventwithpython.com/beyond/chapter3.html代码格式化是将一组规则应用于源代码,从而使得代码风格能够简洁统一。虽然代码格式对解析程序的计算机来说不重要,但代码格式对于可读性是至关重要的,这是维护代码所必需的条件。如果你的代码对人(无论是你还是同事)来说都很......
  • Python 进阶指南(编程轻松进阶):四、起个好名字
    原文:http://inventwithpython.com/beyond/chapter4.html计算机科学中最困难的两个问题是命名事物、缓存失效引起错误."这个经典的笑话,出自利昂·班布里克之手,并基于菲尔·卡尔顿的一句话,包含了一个真理的核心:很难为变量、函数、类和编程中的任何其他东西想出一个好名字,正式的......
  • Python 进阶指南(编程轻松进阶):五、发现代码异味
    原文:http://inventwithpython.com/beyond/chapter5.html导致程序崩溃的代码显然是错误的,但是崩溃并不是发现程序问题的唯一手段。其他迹象可能表明程序存在更微妙的错误或不可读的代码。就像气体的味道可以指示气体泄漏或者烟雾的味道可以指示火灾一样,代码异味是指示潜在错误......
  • Python Qt 图形界面编程PySide2学习笔记
    内容来源:PythonQt简介安装_哔哩哔哩_bilibili1.使用QTDesigner对UI进行布局,不需要改代码,只保存.ui文件即可2.如果已有控件,想要做到自适应界面,要选中多个控件,右键选择Layout布局方式。3.对于单个控件,可以先拖入一个Layout项(垂直或水平Layout)后,再将该控件拖到右侧Layout项上进......
  • 20230408-Python-循环语句-day5
    循环4月7-8Python提供了for循环和while循环循环类型描述while在给定的判断条件作为true是执行循环体,是否退出循环体for重复执行语句循环控制语句控制语句描述break语句在语句块执行过程中终止循环,并且跳出循环整个循环continue语句......
  • Python学习——Day2
    一、变量名的命名的大前提:应该能够反应出变量值所记录的状态具体的变量名的命名规范如下:1、变量名是由字母、数字、下划线组成2、不能以数字开头3、不能使用关键字命名变量名一些常见的关键字:['and','as','assert','break','class','continue','def','del','eli......
  • Python 元编程
    作者:袁首京原创文章,转载时请保留此声明,并给出原文连接。元编程并不象它听起来那么时髦和新奇。常用的decorator就可以认为是一种元编程。简单来说,元编程就是编写操作代码的代码。有点绕,是吧?别着急,咱们一点一点来讨论。注意:本文中的代码适用于Python3.3及以上。元......
  • 谷歌浏览器 使用中文翻译
    一、找到host文件,并打开。例如以下:二、将 172.217.192.90translate.googleapis.com直接粘贴到host文件的底部即可。(PS:该信息是IP+谷歌域名组成。IP有有效期(即会失效))解决方法:关注月光博客公众号  发送谷歌翻译会给出新的ip  ......
  • Python Pandas pivot_table 透视表 计数
    pivot_table函数pivot_table(data=表格,index=行,columns=列,values=值,aggfunc=计数函数,margins=True#汇总统计)aggfunc调用函数,不带括号不带括号时,调用的是这个函数本身,是一个函数对象带括号时,调用的是函数的执行结果透视表中......