使用 PySide 在 QLabel 中显示视频流

2023-12-03

有人能给我指出如何在 PySide 中创建新的 QMovie “提供程序”的正确方向吗?

我有一个视频流,我想尽可能简单地显示(没有音频,只是一系列具有未知且可变帧速率的帧)。这个例子看起来很完美,只是我的视频来自非传统来源。它不是文件,而是格式未标准化的网络流。我可以轻松编写接收每个帧的代码,我的想法是创建一个“QMovie 提供程序”,以便我可以在标签上显示此流,如上面的示例所示。

我的第一个想法是只子类化 QMovie 并覆盖那里的一些函数,但在阅读时我开始对此有了新的想法文档因为我不知道应该如何处理我的实例将从中读取的“设备”。

我在上述文档中注意到 QMovie 使用 QImageReader,因此我的下一个想法是扩展该类并让它从我的流中读取帧。然而,这提出了类似的问题,例如,我应该如何处理“supportedImageFormats()”函数?

我一直在尝试每次收到新帧时直接更新 QLabel 上的图像,但随后我收到错误“QPixmap:在 GUI 线程之外使用像素图是不安全的”。

所以基本上我有点困惑,并且非常感谢任何关于如何让 QLabel 在 PySide 应用程序中显示我的视频流的指针或教程。


为了供将来参考,这是我如何设法使其工作的。

使用信号和槽机制,以下应用程序可以工作。信号/槽机制似乎发现在 up_camera_callback 函数内创建并发送到 CameraDisplay.updateFrame 函数的图像来自不同的线程,并采取了必要的预防措施。

class CameraDisplay(QtGui.QLabel):
  def __init__(self):
    super(CameraDisplay, self).__init__()

  def updateFrame(self, image):
    self.setPixmap(QtGui.QPixmap.fromImage(image))

class ControlCenter(QtGui.QWidget):
  up_camera_signal = QtCore.Signal(QtGui.QImage)
  up_camera = None

  def __init__(self):
    super(ControlCenter, self).__init__()
    self.up_camera = CameraDisplay()
    self.up_camera_signal.connect(self.up_camera.updateFrame)

    grid = QtGui.QGridLayout()
    grid.setSpacing(10)

    grid.addWidget(self.up_camera, 0, 0)

    self.setLayout(grid)

    self.setGeometry(300, 300, 350, 300)
    self.setWindowTitle('Control Center')
    self.show()

  def up_camera_callback(self, data):
    '''This function gets called by an external thread'''
    try:
      image = QtGui.QImage(data.data, data.width, data.height, QtGui.QImage.Format_RGB888)
      self.up_camera_signal.emit(image)

    except Exception, e:
      print(e)

if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  ex = ControlCenter()
  sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PySide 在 QLabel 中显示视频流 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • 模糊效果 CSS3 Firefox(linux)

    如果用户未注册 我试图在我的相册上获得模糊效果 我明白了 但仅限于 chrome 在我的 Firefox 14 0 1 linux 中我无法让它工作 我的html模板 我在django下开发 h2 Gallerie h2 ul class
  • matplotlib 3D 图,plot_surface 黑色

    我有以下数据 https www dropbox com s u7ee09chaixw5vb draw dl 0 它是使用python3中的pickle保存的 它只是一个二维的python列表 形式为z 我使用以下代码绘制 3D 图形 但它
  • 命名空间的自定义配置节问题的智能感知

    我刚刚滚动了一个自定义配置部分 为 Intellisense 创建了一个随附的架构文档 并将其添加到 Web config 的 Schemas 属性中迈克尔 斯图姆的回答另一个类似的问题 不幸的是 可能由于我以有限的知识手工创建 XSD I
  • 如何使用字符串设置 jQueryUI Datepicker 的 minDate/maxDate?

    jQueryUI 日期选择器文档指出可以使用 当前日期格式中的字符串 来设置 minDate 选项 所以我尝试了以下方法来初始化日期选择器 input date datepicker minDate 01 01 2010 maxDate 1
  • 融合具有列模式的 data.table

    我有一个data table看起来像这样 id A1g hi A2g hi A3g hi A4g hi 1 2 3 4 5 我想melt这张表看起来像这样 id time hi 1 1 2 1 2 3 1 3 4 1 4 5 我尝试过这样的
  • 连接 __contains 和 __in 最简单的方法是什么?

    我正在做标签搜索功能 用户可以观察很多标签 我将所有标签都放在一个元组中 现在我想找到包含列表中至少一个标签的所有文本 象征性 text contains in asd dsa 我唯一的想法是循环 例如 q text objects all
  • “分段错误”与“运行时”错误? [复制]

    这个问题在这里已经有答案了 考虑一下这段代码片段 char str hellow Ghost str 0 z printf s str 这是一个分段错误 它还会出现运行时内存错误吗 我对分段错误的理解是 当您访问不属于您的内存时出现分段错误
  • Spring Boot 无法拦截执行器访问

    在Spring Boot 2 1 6版本中无法拦截访问执行器请求现在我有一个全局拦截器 Component public class ServiceFilter implements HandlerInterceptor log4j sta
  • 提升以固定单子变压器堆栈的“内部”

    假设我有一个IO Int包裹在一个StateT MyState 那么我的值为State MyState Int我想在堆叠单子中使用它 我如何在这种内在的意义上提升它 我已经知道使用lift or liftIO如果我得到与内部兼容的东西 我只
  • 编译为字节码,Java 与 Python。造成所用时间差异的原因是什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 Java 和 python 仅谈论 CPython 都分别解释为 Java 和 CPython 字节码 然后 两个字节码都由各自的虚拟机 JVM 和 Cpython VM 解释
  • C#:使用字节数组创建位图

    我正在尝试使用以下代码使用字节数组动态创建位图图像 Bitmap GetImage IntPtr ip Marshal AllocCoTaskMem imagesize some code to fill ip Image img new
  • 如何在 iOS 13 中的 Swift 中立即更改状态栏文本颜色

    我正在使用 Swift 5 1 和 Xcode 11 1 目前我已经完成了深色模式设计的实现 用户使用此代码在设置页面中更改主题样式后 主题会立即更新 guard let appDelegate UIApplication shared d
  • 从 TextBox 继承的 vb .NET 自定义控件不会触发 Paint 事件

    我需要一个始终被禁用的多行文本框 但它不应该将自己涂成灰色 但我想保留其设计者选择的颜色 我以前对始终黑色标签 无多行 有相同的要求 因此我从 Label 继承 例如 Imports System ComponentModel Public
  • 我无法在 Visual Studio 中同时构建项目的多个配置,但可以使用 MSBuild

    我想在一个项目中同时构建两个配置 假设当我想构建发行版本 但我什至想构建调试版本 反之则不然 从 开始使用单个 Visual Studio 解决方案同时构建 x86 和 x64 我尝试添加到 csproj
  • 选框设置速度

    我正在使用选取框来显示我的一项活动中的文本 我的问题是是否可以加快选取框的速度 使其在屏幕上滚动得更快 下面是我的 XML 和 Java TextView et2 TextView findViewById R id noneednum e
  • 如何将世界划分为单元格(网格)

    如何将世界划分为几乎相同大小的单元格 以便每个纬度 经度可以映射到不同的单元格 我很确定我见过一个库这样做 将单元格标记为 S1 S2 等 假设我们有 62 356279 99 422395 如何将其映射到名为 FR 23 的 2km 2k
  • OleDbConnection.Open() 仅在一个项目中引发异常,相同的代码适用于其他项目

    The Microsoft ACE OLEDB 12 0 provider is not registered on the local machine 我知道解决这个问题的常见方法是安装 Microsoft Access 数据库引擎 20
  • 将 Python 字典的值写回文件

    我将两个 XML 文件中的信息提取到两个字典中 因为我想比较这些文件并更改其中一个文件中的信息 这些是我的词典 来源词典 d source 123 description 1 456 description 2 目标词典 d target
  • 使用 Laravel 4 更新视图中的实时数据(如进度条)

    TL DR 我想发送数据以在视图中实时更新 例如进度 显示操作状态的栏 在 Laravel 4 中做到这一点的最佳方法是什么 设置 我正在开发一个基于 Laravel 4 的项目 其中每个用户都可以兑换序列号 我创建了一个管理后端 我可以在
  • 使用 PySide 在 QLabel 中显示视频流

    有人能给我指出如何在 PySide 中创建新的 QMovie 提供程序 的正确方向吗 我有一个视频流 我想尽可能简单地显示 没有音频 只是一系列具有未知且可变帧速率的帧 这个例子看起来很完美 只是我的视频来自非传统来源 它不是文件 而是格式