You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
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 = ' '
|
|
|
|
|