QImage в массив Numpy с использованием PySide

в настоящее время я переключаюсь с PyQt на PySide.

С PyQt я преобразовал QImage до Numpy.Array используя этот код, который я нашел на так:

def convertQImageToMat(incomingImage):
    '''  Converts a QImage into an opencv MAT format  '''

    incomingImage = incomingImage.convertToFormat(4)

    width = incomingImage.width()
    height = incomingImage.height()

    ptr = incomingImage.bits()
    ptr.setsize(incomingImage.byteCount())
    arr = np.array(ptr).reshape(height, width, 4)  #  Copies the data
    return arr
ptr.setsize(incomingImage.byteCount()) не работает с PySide, так как это часть void* поддержка в PyQt.

мой вопрос: Как я могу преобразовать QImage в Numpy.Array используя PySide.

EDIT:

Version Info
> Windows 7 (64Bit)
> Python 2.7
> PySide Version 1.2.1
> Qt Version 4.8.5

2 ответов


PySide, похоже, не предлагает bits метод. Как насчет использования constBits получить указатель на массив?


фокус в том, чтобы использовать QImage.constBits() как предложил @Henry Gomersall. Код, который я использую сейчас:

def QImageToCvMat(self,incomingImage):
    '''  Converts a QImage into an opencv MAT format  '''

    incomingImage = incomingImage.convertToFormat(QtGui.QImage.Format.Format_RGB32)

    width = incomingImage.width()
    height = incomingImage.height()

    ptr = incomingImage.constBits()
    arr = np.array(ptr).reshape(height, width, 4)  #  Copies the data
    return arr