Я хочу обнаружить лицо из растрового изображения метки, и я не знаю, как преобразовать QPixmap в массив numpy.
image = self.imageLabel.pixmap()
image = self.convertQPixmapToNumpyArray(image) # In her i
#can't convert QPixmap to numpy array
face = self.faceDetector(image)
face = self.convertNumpyArrayToPixmap(face)
self.faceLabel.setPixmap(QPixmap(face))
эта функция обнаруживает лицо и возвращает лицо.
def faceDetector(self, image):
faceClassifier = cv2.CascadeClassifier(cv2.data.haarcascades +
'haarcascade_frontalface_alt.xml')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
faces = faceClassifier.detectMultiScale(gray, scaleFactor=1.1,
minNeighbors=5)
for (x, y, w, h) in gray:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)
face = img[y:y + h, x:x + w]
face = cv2.resize(face, (85, 85))
return face
с помощью этой функции конвертировать массив numpy в растровое изображение
def convertNumpyArrayToPixmap(self, img):
try:
qformat = QtGui.QImage.Format_Indexed8
if len(img.shape) == 3:
if img.shape[2] == 4:
qformat = QtGui.QImage.Format_RGBA8888
pass
else:
qformat = QtGui.QImage.Format_RGB888
outImage = QtGui.QImage(img, img.shape[1],
img.shape[0], img.strides[0], qformat)
pixMap = outImage.rgbSwapped()
return pixMap
except AttributeError as e:
print(e)
#Здесь должна быть функция, которая преобразует QPixmap в пустой массив для обнаружения лица.
def convertQPixmapToNumpyArray(self, numpy):
pass