pyqt5:槽函数传参/opencv图像转化QPixmap和QImage/使用函数方法读取图片
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()


浙公网安备 33010602011771号