1、opencv读取图像转化QPixmap和QImage:
类的方法:
def cvimg_to_pixmap(self,cvimg):#少了个self,报错Process finished with exit code -1073740791 (0xC0000409) height, width, depth = cvimg.shape cvimg = cv2.cvtColor(cvimg, cv2.COLOR_BGR2RGB) cvimg = QtGui.QImage(cvimg.data, width, height, width * depth, QtGui.QImage.Format_RGB888)#转换成QImage cvimg = QtGui.QPixmap(cvimg).scaled(cvimg.width(), cvimg.height())#转换成QPixmap return cvimg
2、pyqt 仅使用函数方法读取图片:
槽函数传参,采用匿名函数方法:
btn.clicked.connect(lambda: show_pic(imgW))#槽函数传参
如下面代码示例:
import sys,webbrowser from PyQt5 import QtGui,QtWidgets,QtCore import cv2 def cvimg_to_pixmap(cvimg): height, width, depth = cvimg.shape cvimg = cv2.cvtColor(cvimg, cv2.COLOR_BGR2RGB) cvimg = QtGui.QImage(cvimg.data, width, height, width * depth, QtGui.QImage.Format_RGB888) # 转换成QImage cvimg = QtGui.QPixmap(cvimg).scaled(cvimg.width(), cvimg.height()) # 转换成QPixmap return cvimg def mn(): app = QtWidgets.QApplication(sys.argv) win=QtWidgets.QWidget() win.setWindowTitle("PyQt")#设置窗口title btn=QtWidgets.QPushButton(win) btn.setText("打开图片") btn.setGeometry(QtCore.QRect(80, 160, 131, 23)) btn.setObjectName("pushButton") imgW = QtWidgets.QLabel(win) imgW.move(250, 20) imgW.resize(150, 150) # 重设Label大小 imgW.setScaledContents(True) # 设置图片自适应窗口大小 btn.clicked.connect(lambda: show_pic(imgW))#槽函数传参 win.show() # show 窗口 sys.exit(app.exec_()) def show_pic(imgW): # pixmap=QtGui.QPixmap('D:/project/project/line_detect/resources/black_line.png') # imgW.setPixmap(pixmap) img = cv2.imread('D:\project\project\line_detect/resources/black_line.png') img = cvimg_to_pixmap(img) imgW.setPixmap(img) if __name__=='__main__': mn()