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