gpt4 book ai didi

python - `QImage` 构造函数有未知关键字 `data`

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:51 27 4
gpt4 key购买 nike

假设我正在使用 opencv 从网络摄像头拍摄图像。

_, img = self.cap.read()  # numpy.ndarray (480, 640, 3)

然后我使用 img 创建一个 QImage qimg:

qimg = QImage(
data=img,
width=img.shape[1],
height=img.shape[0],
bytesPerLine=img.strides[0],
format=QImage.Format_Indexed8)

但是它给出了一个错误:

TypeError: 'data' is an unknown keyword argument

但是在this中说文档中,构造函数应该有一个名为 data 的参数。

我正在使用 anaconda 环境来运行这个项目。

opencv version = 3.1.4

pyqt version = 5.9.2

numpy version = 1.15.0

最佳答案

他们的意思是需要数据作为参数,而不是关键字调用数据,下面的方法将numpy/opencv图像转换为QImage:

from PyQt5.QtGui import QImage, qRgb
import numpy as np
import cv2

gray_color_table = [qRgb(i, i, i) for i in range(256)]

def NumpyToQImage(im):
qim = QImage()
if im is None:
return qim
if im.dtype == np.uint8:
if len(im.shape) == 2:
qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_Indexed8)
qim.setColorTable(gray_color_table)
elif len(im.shape) == 3:
if im.shape[2] == 3:
qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_RGB888)
elif im.shape[2] == 4:
qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_ARGB32)
return qim

img = cv2.imread('/path/of/image')
qimg = NumpyToQImage(img)
assert(not qimg.isNull())

或者您可以使用 qimage2ndarray图书馆

当使用索引裁剪图片时,只修改shape,不修改data,解决方法是复制一份

img = cv2.imread('/path/of/image')
img = np.copy(img[200:500, 300:500, :]) # copy image
qimg = NumpyToQImage(img)
assert(not qimg.isNull())

关于python - `QImage` 构造函数有未知关键字 `data`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51607038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com