gpt4 book ai didi

pointers - 如何使用 PYQt' QImage scanline() 访问像素数据

转载 作者:行者123 更新时间:2023-12-03 06:26:04 28 4
gpt4 key购买 nike

我需要使用 PyQt4 访问 qimage 对象中的像素数据。

.pixel() 太慢,因此文档说使用 scanline() 方法。

在 C++ 中,我可以获得 scanline() 方法返回的指针,并从缓冲区读取/写入像素 RGB 值。

使用 Python,我得到了指向像素缓冲区的 SIP voidptr 对象,因此我只能使用 bytearray 读取像素 RGB 值,但无法更改原始指针中的值。

有什么建议吗?

最佳答案

以下是一些示例:

from PyQt4 import QtGui, QtCore
img = QtGui.QImage(100, 100, QtGui.QImage.Format_ARGB32)
img.fill(0xdeadbeef)

ptr = img.bits()
ptr.setsize(img.byteCount())

## copy the data out as a string
strData = ptr.asstring()

## get a read-only buffer to access the data
buf = buffer(ptr, 0, img.byteCount())

## view the data as a read-only numpy array
import numpy as np
arr = np.frombuffer(buf, dtype=np.ubyte).reshape(img.height(), img.width(), 4)

## view the data as a writable numpy array
arr = np.asarray(ptr).reshape(img.height(), img.width(), 4)

关于pointers - 如何使用 PYQt' QImage scanline() 访问像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11360009/

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