matplotlib.pyplot.imshow上的图像看起来不错,但是当使用Qimage在QT GUi上显示时,图像非常扭曲

时间:2016-05-21 16:18:54

标签: python numpy image-processing matplotlib pyqt4

好的,我正在尝试从处理过的普通人脸图像中提取我的本地二进制模式图像,然后在我的QT Gui中显示它。以下代码是:

def extractFace(self):
    try:



        self.lbpface = self.model.lbpface(self.face)
        height, width = self.self.lbpface.shape[:2]

        #plt.imshow(self.lbpface, cmap= 'gray')
        #plt.show()

        img = QtGui.QImage(self.lbpface,
                           width,
                           height,
                           QtGui.QImage.Format_Indexed8)
        return QtGui.QPixmap.fromImage(img)
    except:
        return QtGui.QPixmap("nosignal.jpg")

但结果是:Not expected result..

现在,如果我取消注释plt.imshow,我会得到以下结果(这是我想在GUI中显示的内容):Expected result.

我尝试了各种各样的东西,并且如果我尝试添加就得到了最好的结果:

self.lbpface = np.asarray(self.model.lbpface(self.face), dtype = np.uint8)

导致: A little closer...

任何想法如何解决这个问题?我的意思是,它在matplot数字上表现得很好,但是一旦变成了QImage,它就会变得非常扭曲

还会补充说我对QT4来说是全新的。

1 个答案:

答案 0 :(得分:0)

在尝试了各种各样的东西后,我最终做到了这一点,虽然不是很优化,可能有点慢,但是它起作用并向我展示了一个面部图像:

def extractFace(self):
    try:
        self.lbpface = self.model.lbpface(self.face)

        cv2.imwrite("TEST.JPG",self.lbpface)

        return QtGui.QPixmap('TEST.JPG')
    except:
        return QtGui.QPixmap("nosignal.jpg")