python opencv pyqt pyside mat

python - PyQt/PySide: ¿Cómo convierto QImage en el formato MAT de OpenCV?



(1)

Estoy buscando crear una función para convertir un QImage en formato Mat de OpenCV (CV2) desde PyQt.

¿Cómo hago esto? Mis imágenes de entrada con las que he estado trabajando hasta ahora son PNG (ya sea RGB o RGBA) que se cargaron como QImage.

En última instancia, quiero tomar dos QImages y usar la función matchTemplate para encontrar una imagen en la otra, así que si hay una forma mejor de hacerlo que ahora, estoy abierto a eso también. Pero ser capaz de convertir de ida y vuelta fácilmente sería ideal.

Gracias por tu ayuda,


Después de mucho buscar aquí, encontré una joya que me dio una solución de trabajo. Derivé mucho de mi código de esta respuesta a otra pregunta: https://.com/a/11399959/1988561

El desafío clave que tuve fue cómo utilizar correctamente el puntero. Lo más importante que creo que me faltaba era la función de ajuste.

Aquí están mis importaciones:

import cv2 import numpy as np

Aquí está mi función:

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