8

現在、PyQt から PySide に切り替えています。

PyQt を使用して、 SOで見つけたこのコードを使用してに変換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

ただし、これはPyQtのサポートptr.setsize(incomingImage.byteCount())の一部であるため、PySide では機能しません。void*

Numpy.Array私の質問は次のとおりです。 QImageを PySide を使用してに変換するにはどうすればよいですか。

編集:

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

3 に答える 3

3

トリックは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
于 2016-04-15T11:51:48.940 に答える