如何使用 PyQt5 在 QWidget 上设置 numpy 数组图像

2024-04-22

我正在将相机中的图像作为 numpy 数组读取。我的目标是将其放入 pyqt5 的 Qwidget 中并在我的 mainwindow gui 程序上打印,但我收到以下错误:

TypeError: QPixmap(): argument 1 has unexpected type 'numpy.ndarray'

这是代码:

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from epics import PV
import numpy as np

class PanoramicGUI:
    def __init__(self):
        self.MainWindow = uic.loadUi('panoramicGUI.ui')

        self.MainWindow.SavePositionButton. clicked.connect(self.save_image)

    def save_image(self):
        detectorData = PV("CAMERA:DATA")
        self.data = detectorData.get()
        self.data = np.array(self.data).reshape(2048,2048).astype(np.int32)
        print(self.data)

        img = PrintImage(QPixmap(self.data))

        self.MainWindow.WidgetHV1X1.setLayout(QtWidgets.QVBoxLayout())
        self.MainWindow.WidgetHV1X1.layout().addWidget(img)

class PrintImage(QWidget):
    def __init__(self, pixmap, parent=None):
        QWidget.__init__(self, parent=parent)
        self.pixmap = pixmap

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), self.pixmap)

if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)
    panoramic = PanoramicGUI()
    panoramic.MainWindow.show()
    app.exec_()

有人能帮我吗?

Regards,

Gabriel.


有多种方法可以解决这个问题。

一种选择是通过提供文件路径直接从磁盘加载图像。所以你会有img = PrintImage(QPixmap(FILE_PATH)) where FILE_PATH是一些字符串而不是 numpy 数组。有关更完整的示例,请参阅以下链接:https://www.tutorialspoint.com/pyqt/pyqt_qpixmap_class.htm https://www.tutorialspoint.com/pyqt/pyqt_qpixmap_class.htm

如果你真的想用 numpy 数组来处理它,那么你需要创建一个QtGui.QImage()首先对象并将其传递到您的QtGui.QPixmap()对象而不是直接使用 numpy 数组。根据文档QtGui.QImage(),如果数据尚未采用可识别的格式,则需要设置数据的格式QtGui.QImage()。所以以下应该有效:

#Initialze QtGui.QImage() with arguments data, height, width, and QImage.Format
self.data = np.array(self.data).reshape(2048,2048).astype(np.int32)
qimage = QtGui.QImage(self.data, self.data.shape[0],self.data.shape[1],QtGui.QImage.Format_RGB32)
img = PrintImage(QPixmap(qimage))

最后一个论点QtGui.QImage()可以从此处的文档中更改为您想要的列表中的任何内容http://srinikom.github.io/pyside-docs/PySide/QtGui/QImage.html#PySide.QtGui.PySide.QtGui.QImage.Format http://srinikom.github.io/pyside-docs/PySide/QtGui/QImage.html#PySide.QtGui.PySide.QtGui.QImage.Format

最后的链接总体来说对于所有事情来说都非常好QtGui有关的。

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

如何使用 PyQt5 在 QWidget 上设置 numpy 数组图像 的相关文章

  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 如何使使用 css 调整大小的图像在 IE 中看起来不错?

    当使用 css 宽度 高度或属性宽度 高度缩放图像时 IE6 和 IE7 无法很好地缩放网页中的图像 我不确定它默认使用哪种算法 但这不好 在这些浏览器中缩放时 缩放图像会显示锯齿伪影 幸运的是 有一种方法可以通过简单的 css 规则强制
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f

随机推荐

  • Ruby 中按身份分组

    鲁比的怎么样group by http ruby doc org core 2 2 3 Enumerable html method i group by方法按标识对数组进行分组 或者更确切地说self 其元素 a abccac chars
  • 设置 jQuery 的 get 速记超时

    是否可以使用 jQuery 的 get 简写来设置 ajax 超时参数 如果不是 使用速记发送的请求是否会超时 jQuery get url data callback data textStatus XMLHttpRequest data
  • 禁用 Google 应用测量调试日志记录

    在 Xcode 7 2 上 如何禁用这些调试 应用程序测量紧急显示 2016 01 07 11 52 53 085 MyApp 1457
  • Gradle 将工件部署到本地目录内的 Maven 存储库

    Gradle 与 Maven 的等价物是什么
  • 如何允许Java程序一次只运行一个实例?

    我需要防止用户多次启动我的 Java 应用程序 WebStart Swing 应用程序 因此 如果应用程序已经在运行 则不应再次启动它或显示警告 再次关闭 有没有一些方便的方法来实现这一目标 我考虑过阻止端口或将某些内容写入文件 但希望您可
  • EntityFramework 如何覆盖属性

    我刚刚开始在 VS2010 中使用 EF 那东西真是太神奇了 坦白说我有些不明白 例如 我有带有属性的 EntityType 它们是从数据库结构生成的 现在 我只需在代码中重写该属性 我不需要将属性的值保存回数据库 但每次从数据库读取它时
  • 在 React 中渲染 Three.js 元素?

    我正在尝试制作一个渲染 Three js 场景的 React 组件 但是 每当我尝试安装组件而不是看到正在渲染的任何类型的场景时 我只看到文本 object HTMLCanvasElement 正在显示 这是我的组件 import Reac
  • 获取DLL函数的内存地址

    我想知道是否有可能 使用 C 和 WindowsAPI 是否有一个函数可以让我获得 dll 中函数的 32 位 我认为 内存地址 例如 如何获取 kernel32 dll 中 Beep 的 32 位 xxxxxxxx 地址 其次 如果我在汇
  • Symfony2:在实体类中获取 security.context

    是否可以得到security context在实体类中 我知道以下不起作用 我不知道如何实施 user part Set createdAt ORM PrePersist public function setCreatedAt user
  • 使用 Pyparse 解析多个项目并将其分组在一起

    这是建立在构建一个简单的解析器 能够使用 PyParse 解析不同的日期格式 https stackoverflow com questions 28113532 build a simple parser that is able to
  • 如何检测元素是否已滚动但仅滚动一次?

    我正在尝试检测某个元素是否已滚出并完成了以下代码 window bind scroll function var btn intro div summary a href top if window scrollTop gt btn off
  • Sqlite - 降级时

    最近我更新了我的android游戏 编辑sqlite数据库在我的表中添加新字段 更新后 我收到4个崩溃报告 其中3个来自同一设备 三星Galaxy S4 android database sqlite SQLiteException 无法降
  • JQuery 对话框在关闭时冻结

    termSheetPrinted dialog autoOpen false resizable true height 800 width 950 position center title Term Sheet close functi
  • 在 Spark SQL 中将结构转换为映射

    我正在尝试转换一个数据集 该数据集声明一列具有特定的struct类型 例如struct
  • React 中的 Map 函数(错误:TypeError:e.map 不是函数)

    我想从道具渲染项目 我可以使用初始状态来完成 但不能使用服务器的响应来完成 我的渲染函数 const data this props return div data map item index gt div span item id sp
  • 修复颠覆中犯下的错误

    这似乎是人们可能想要用颠覆做的最基本的事情之一 但我使用版本控制系统的时间并不长 不知怎的 我似乎无法弄清楚这一点 而且我不知道在哪里svn文档看看 基本上 修订版 167 工作得很好 但我犯了一个错误 并将其提交为修订版 168 而且我不
  • 无法在 mac osx 上的 QT 中创建新项目

    过去几天我一直坚持这个问题 我已经安装了 QT 4 8 并且也安装了库 但是当我开始创建一个新项目时 我只能选择使用 CMake 创建一个普通的 C 项目 我没有使用自动 qmake 的选项 我不知道为什么 如果有人可以帮忙 我们将不胜感激
  • Haskell 中的 Futamura 投影的证明

    我读了 Dan Piponi 的优秀博客文章二村博士的三个投影 http blog sigfpe com 2009 05 three projections of doctor futamura html 在文章的最后 他有一个附录 其中包
  • 使用实体管理器时,没有为该名称定义查询

    我有以下实体 package com server models Entity Table name users NamedQueries NamedQuery name User QUERY FIND USER query SELECT
  • 如何使用 PyQt5 在 QWidget 上设置 numpy 数组图像

    我正在将相机中的图像作为 numpy 数组读取 我的目标是将其放入 pyqt5 的 Qwidget 中并在我的 mainwindow gui 程序上打印 但我收到以下错误 TypeError QPixmap argument 1 has u