python中将QImage转化成 opencv 下的 MAT(numpy ndarray) 对象

发布时间 2023-03-22 21:16:01作者: 白雪天涯

最近写了一个脚本,用PyQt自带的screen方法截取某个程序的画面,然后用OpenCV判断截取的图片中有没有想要的东西

from PyQt5.QtWidgets import QApplication
import sys
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()

我们print一下这个对象

 

 可以看到这个方法返回的是一个QImage对象,而OpenCV接受的参数需要是一个MAT(numpy ndarray)对象,用下边这个方法就可以把它转换


import numpy as np

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) return arr
参考帖子:https://stackoverflow.com/questions/18406149/pyqt-pyside-how-do-i-convert-qimage-into-opencvs-mat-format