当前位置:  开发笔记 > 编程语言 > 正文

将Python Opencv Image(numpy数组)转换为PyQt QPixmap图像

如何解决《将PythonOpencvImage(numpy数组)转换为PyQtQPixmap图像》经验,为你挑选了2个好方法。

我想将python opencv图像转换为QPixmap.

我按照指示显示页面链接,我的代码附在下面

img = cv2.imread('test.png')[:,:,::1]/255. 
imgDown = cv2.pyrDown(img)
imgDown = np.float32(imgDown)        
cvRGBImg = cv2.cvtColor(imgDown, cv2.cv.CV_BGR2RGB)
qimg = QtGui.QImage(cvRGBImg.data,cvRGBImg.shape[1], cvRGBImg.shape[0], QtGui.QImage.Format_RGB888)
pixmap01 = QtGui.QPixmap.fromImage(qimg)
self.image01TopTxt = QtGui.QLabel('window',self)
self.imageLable01 = QtGui.QLabel(self)
self.imageLable01.setPixmap(pixmap01)

代码没有编译和运行时错误,但转换错误,我只是得到一些噪声图像.我不确定问题是什么.有人可以帮忙吗?



1> AdityaIntwal..:

使用它将cvImage转换为Qimage,这里cvImage是原始图像

height, width, channel = cvImg.shape
bytesPerLine = 3 * width
qImg = QImage(cvImg.data, width, height, bytesPerLine, QImage.Format_RGB888)

并将此Qimage设置为Qimage中的Lable.setPixmap参数.有用!!!



2> 小智..:

只是补充了AdityaIntwala的答案,如果图像看起来是红色或蓝色,那是因为格式不是RGB,而是BGR(反色)。在这种情况下,请使用QImage.rgbSwapped方法进行更正:

height, width, channel = cvImg.shape
bytesPerLine = 3 * width
qImg = QImage(cvImg.data, width, height, bytesPerLine, QImage.Format_RGB888).rgbSwapped()

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有