如何访问与PyQt的” QImage的扫描线的像素数据()(How can access to pi

2019-07-30 07:17发布

我需要访问与PyQt4的一个QImage的对象像素的数据。

该.pixel()太慢,因此文档说使用扫描线()方法。

在C ++中,我可以得到通过该扫描线()方法返回的指针和读/写来自缓冲器的像素RGB值。

与Python,我得到指向像素缓冲区的SIP voidptr对象,所以我只能读取字节组使用的像素RGB值,但我不能在原来的指针更改值。

有什么建议?

Answer 1:

这里有些例子:

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)


文章来源: How can access to pixel data with PYQt' QImage scanline()