Python 使用PyQt5显示OpenCV图像
我正在学习使用Python 使用PyQt5显示OpenCV图像,python,opencv,pyqt,pyqt5,qt-designer,Python,Opencv,Pyqt,Pyqt5,Qt Designer,我正在学习使用pyqt5和qt设计器,我很困惑 我的目标是在单击按钮时显示一张图片,因为将来我想将所有这些与opencv结合起来 现在我有了一个带有按钮和图像的窗口(它是一个标签) 从.ui到.py的转换代码: class Ui_MainWindow(object): def setupUi(self, MainWindow): # Omitted code self.pushButton.clicked.connect(self.imagen)
pyqt5
和qt设计器
,我很困惑
我的目标是在单击按钮时显示一张图片,因为将来我想将所有这些与opencv
结合起来
现在我有了一个带有按钮和图像的窗口(它是一个标签)
从.ui
到.py
的转换代码:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
# Omitted code
self.pushButton.clicked.connect(self.imagen)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "PROG PRUEBAS QT"))
self.pushButton.setText(_translate("MainWindow", "Escala de grises"))
self.label.setText(_translate("MainWindow", "<html><head/><body><p><img src=\":/chchch/img.png\"/></p></body></html>"))
#
def imagen(self):
img = cv.imread('img.png', 0)
cv.imshow('sss', img)
cv.imwrite('pichi.png', img)
#
import noe_rc
class Ui\u主窗口(对象):
def设置UI(自我,主窗口):
#省略代码
self.button.clicked.connect(self.imagen)
def重新传输(自身,主窗口):
_translate=QtCore.QCoreApplication.translate
setWindowTitle(_translate(“MainWindow”、“PROG PRUEBAS QT”))
self.butdown.setText(_translate(“主窗口”、“Escala de grises”))
self.label.setText(_translate(“主窗口”,“p>”))
#
def图像(自身):
img=cv.imread('img.png',0)
简历imshow('sss',img)
简历imwrite('pichi.png',img)
#
进口无核武器
但是现在,当我用Pycharm运行它时,它在import noe_rc中崩溃。如果我发表评论,图像不会出现
PS:如果我对导入
imagen
功能进行了注释,但图像会出现在新窗口中。要显示OpenCV图像,您必须将图像转换为QImage
然后转换为QPixmap
,在那里可以使用QLabel
显示图像
from PyQt5 import QtGui, QtCore, QtWidgets
import cv2
import sys
class DisplayImageWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(DisplayImageWidget, self).__init__(parent)
self.button = QtWidgets.QPushButton('Show picture')
self.button.clicked.connect(self.show_image)
self.image_frame = QtWidgets.QLabel()
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.button)
self.layout.addWidget(self.image_frame)
self.setLayout(self.layout)
@QtCore.pyqtSlot()
def show_image(self):
self.image = cv2.imread('placeholder4.PNG')
self.image = QtGui.QImage(self.image.data, self.image.shape[1], self.image.shape[0], QtGui.QImage.Format_RGB888).rgbSwapped()
self.image_frame.setPixmap(QtGui.QPixmap.fromImage(self.image))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
display_image_widget = DisplayImageWidget()
display_image_widget.show()
sys.exit(app.exec_())
使用此示例图像
什么“崩溃”,PyCharm还是程序?是否有任何错误消息?
noe_rc
是由pyrcc5生成的文件吗?我对输出有问题,它只是行-空白和白色。因此,我删除了rgbSwapped()
,并用格式ARGB32
更改了格式。谢谢你的回答。这个答案是救命稻草。非常感谢。我的意思是,这种格式格式\u RGBA8888\u预乘