加快镜头的实时绘图 (cv2)

2023-12-14

我正在尝试使用 cv2 模块为视频的每一帧创建实时散点图。下面的代码正是这样做的。

然而,对于包含超过 60000 个帧的超过 8 分钟的镜头需要处理,代码效率不高,并且需要比获得所需输出所需的时间更长的时间。

vidcap = cv2.VideoCapture(filepath)
fig, ax = plt.subplots(1)
plt.ion()

x=df["time"][7:100]
y=df["force"][7:100]

for i in range(len(x)):
   vidcap.set(1,590)
   ret, image = vidcap.read()
   frameId = vidcap.get(1) 
   plt.imshow(image,extent=[0,200,0,100], aspect='auto')
   plt.subplot(221)
   plt.plot(x[0+i:1+i],y[0+i:1+i],'or', lw=2)
   plt.subplot(222)
   fig.set_size_inches(20, 10)
   plt.pause(.000001)
   plt.draw()

我考虑过使用 pyqtgraph 来提高过程的速度。有没有更好的方法来处理和绘制视频帧?


这个问题的答案显示了在 matplotlib 中获取视频的两种方法。

要点是不要在每次迭代时重新创建完整的绘图。如果使用该答案中的第二种方法,则使用blit=True可能会进一步提高速度。这如下面的代码所示。

import cv2
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

df = pd.DataFrame({"time": np.linspace(0,20, num=100), 
                   "force" : np.cumsum(np.random.randn(100))})

def grab_frame(cap):
    ret,frame = cap.read()
    return frame # or cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)

#Initiate 
vidcap = cv2.VideoCapture(0)
# vidcap.set(1,590)

fig, (ax,ax2) = plt.subplots(ncols=2,figsize=(20, 10))

x=df["time"][7:100]
y=df["force"][7:100]

#create two image plots
im1 = ax.imshow(grab_frame(vidcap),extent=[0,200,0,100], aspect='auto')
line, = ax2.plot(x[0:1],y[0:1],'or')
ax2.set_xlim(x.min(), x.max())
ax2.set_ylim(y.min(), y.max())

def update(i):
    im1.set_data(grab_frame(vidcap))
    line.set_data(x[0+i:1+i],y[0+i:1+i])
    return im1, line


ani = FuncAnimation(fig, update, frames=len(x), interval=1, blit=True)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加快镜头的实时绘图 (cv2) 的相关文章

  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

    我有一个自定义用户模型 如下所示account models py from django contrib auth modles import AbstractUser from django db models signals impo
  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 此 TypeError 消息中提到的“代码对象”是什么?

    在尝试使用Python时exec声明 我收到以下错误 TypeError exec arg 1 must be a string file or code object 我不想传递字符串或文件 但什么是代码对象 如何创建一个 创建代码对象的
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • HTTP.sys 请求队列和 IIS 应用程序池之间的关系

    我从中读到了这篇文章 HTTP sys 为每个工作进程维护一个请求队列 它将 HTTP 请求发送到工作进程的请求队列 该工作进程为所请求的应用程序所在的应用程序池提供服务 对于每个应用程序 HTTP sys 维护具有一个条目的 URI 命名
  • Javascript读取大文件失败

    JSON 文件大小为 6 GB 当用下面的代码读取时 var fs require fs var contents fs readFileSync large file txt toString 它有以下错误 buffer js 182 t
  • 如何用新行显示阅读提示

    我在用着read内置来读取变量 但我想让输入出现在下一行 即提示符输出一个新行 但两者都不起作用 read p Please input n name Please input n read p Please input n name Pl
  • java:如何使用 .txt 中的数据创建多个数组

    所以这是我必须编写的第一个真正的java程序 我对java也很陌生 该程序必须使用 2 个命令行参数运行 这些参数假定为 x 和 y 坐标 然后确定坐标所在的市和县 为此 我想使用 绕数 但是在开始程序的这些部分之前 我首先需要创建并填充不
  • 如何在 solr4 中对存储在其他服务器上的 XML 文件建立索引

    我将所有 XML 文件存储到另一台服务器上 并且我已在不同服务器上安装和配置 SOLR 我如何将这些 XML 文件索引到 SOLR 我已经检查过 nutch 但它的主要目的是抓取 html 页面并为其建立索引 我不需要爬行 我将所有这些文件
  • 使用 dplyr 对多列求和时忽略 NA

    我正在对多列进行求和 其中一些列不适用 我在用 dplyr mutate 然后写出各列的算术和以获得总和 但这些列有 NA 我想将它们视为零 我能够让它与 rowSums 一起使用 见下文 但现在使用 mutate 使用 mutate 可以
  • 在使用 Python 的 matplotlib 制作动画期间,第一组(散点)绘图数据保留在图表上

    我正在尝试为图表上的一条线和 3 个散点制作动画 除了图表上的第一组散点没有被删除之外 一切似乎都正常 这是代码 您可以尝试将 n 设置为 1 2 或 3 import numpy as np from math import from p
  • 当前可用的最好的 Ajax 历史记录和书签插件 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 似乎每个 Ajax 历史记
  • 如何为 Apache-CXF JAX-WS 启用 Spring Security

    如何在 Apache CXF 上为 apache JAX WS 启用 Spring Security 网络上的示例包括 Jax RS 示例 但我不使用 Jax RS 我不想使用 cxf 的安全性 如何在我的代码中实现它 两种可能的方式 Pu
  • gitignore 没有扩展名的二进制文件

    如何在中忽略二进制文件git使用 gitignore file 例子 g hello c o hello hello 文件是一个二进制文件 能git忽略这个文件 Ignore all Unignore all with extensions
  • Excel VBA 强制关闭 IE

    我目前正在使用以下子程序在自动化后关闭我的 IE Public Sub CloseIE Dim Shell As Object Dim IE As Object Set Shell CreateObject Shell Applicatio
  • 运算符重载中的类数据封装(私有数据)

    下面是代码 代码 访问说明符适用于类级别 而不是实例级别 因此Rational类可以查看任何其他类的私有数据成员Rational实例 自从你的Rational operator 是一个成员函数 它可以访问它的私有数据Rational争论 注
  • jquery动态绑定.on()选择父母还是孩子?

    例如 dataTable tbody tr on click function alert this text dataTable tbody on click tr function alert this text on 将 tr 与单击
  • opengl:将原点更改为左上角

    我在将 openGL 原点设置为视图的左上角时遇到问题 因此 在我的窗口调整大小处理程序中 我执行以下操作 ox and oy are some offsets and width and height are the required v
  • 有没有更好的方法来找出本地 git 分支是否存在?

    我正在使用以下命令来查明是否localgit 分支与branch name存在于我的存储库中 它是否正确 有没有更好的办法 请注意 我是在脚本内执行此操作 为此我想使用管道命令如果可能的话 git show ref verify quiet
  • Itextsharp:在一页上调整 2 个元素

    所以 我在使用 C NET 4 0 WinForms 和 iTextSharp 5 1 2 时遇到了这个问题 我在数据库中存储了一些扫描图像 需要使用这些图像即时构建 PDF 有些文件只有一页 而其他文件则有数百页 使用以下方法工作得很好
  • 错误:VB 运行时未加载

    根据社区的建议编辑版本 In a Windows 8 1电话项目 一部分VB Net还带有商店应用程序和可移植类库的解决方案 我收到此错误消息 由于未加载 VB 运行时 无法调用 但据我所知 尽管如此 代码仍在运行 直到 最终弹出一个错误
  • ForEach 方法后 PowerShell 长度的奇怪行为

    In 官方文件据说Length是一个别名Count 但是我发现他们的行为有所不同的一种情况 另外 如果我更换ForEach方法与ForEach Object the Length会发出 3 谁能解释一下吗 gt 1 3 ForEach Le
  • 使用 SBJSON 解析 Objective-C 中的 JSON

    我只想使用 SBJSON 框架在 Objective C 中解析这个 JSON 字符串 并检索三个数据单元 x 197 y 191 text this is a string 如何才能做到这一点 NSString jsonString x
  • 加快镜头的实时绘图 (cv2)

    我正在尝试使用 cv2 模块为视频的每一帧创建实时散点图 下面的代码正是这样做的 然而 对于包含超过 60000 个帧的超过 8 分钟的镜头需要处理 代码效率不高 并且需要比获得所需输出所需的时间更长的时间 vidcap cv2 Video