import os import sys import cv2 from PyQt5.QtGui import QPixmap, QImage, qRed, qGreen, qBlue from PyQt5.uic import loadUiType from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog, QMessageBox import matplotlib.pyplot as plt import numpy as np from MainWindow import Ui_Form def cvImgtoQtImg(cvImg): # 定义opencv图像转PyQt图像的函数 QtImgBuf = cv2.cvtColor(cvImg, cv2.COLOR_BGR2BGRA) QtImg = QImage(QtImgBuf.data, QtImgBuf.shape[1], QtImgBuf.shape[0], QImage.Format_RGB32) return QtImg def QImage2CV(qimg): tmp = qimg # 使用numpy创建空的图象 cv_image = np.zeros((tmp.height(), tmp.width(), 3), dtype=np.uint8) for row in range(0, tmp.height()): for col in range(0, tmp.width()): r = qRed(tmp.pixel(col, row)) g = qGreen(tmp.pixel(col, row)) b = qBlue(tmp.pixel(col, row)) cv_image[row, col, 0] = r cv_image[row, col, 1] = g cv_image[row, col, 2] = b cv_image = cv2.cvtColor(cv_image, cv2.COLOR_RGB2BGR) return cv_image def QPixmap2cv(qtpixmap): qimg = qtpixmap.toImage() temp_shape = (qimg.height(), qimg.bytesPerLine() * 8 // qimg.depth()) temp_shape += (4,) ptr = qimg.bits() ptr.setsize(qimg.byteCount()) result = np.array(ptr, dtype=np.uint8).reshape(temp_shape) result = result[..., :3] result = cv2.cvtColor(result, cv2.COLOR_RGB2BGR) return result main_ui, _ = loadUiType('ui/bb.ui') class My_UI(QMainWindow, main_ui): def __init__(self): QMainWindow.__init__(self) self.setupUi(self) # 构造界面 self.picpath = ' ' self.openfile_name = ' '