我是PyQt5
]的新手,我试图显示在[browser_button
)中由browse_label
选择的图像,当用户单击crop_button
时,它将裁剪该图像。但是当我将(numpy array)
转换为Qimg(Qpixmap)
时,显示不正确]
from PyQt5 import QtGui,QtWidgets,QtCore,uic from PyQt5.QtWidgets import QApplication,QMainWindow,QPushButton,QMessageBox,QStatusBar from PyQt5.QtCore import QCoreApplication import sys import cv2 IMAGE_1=0 class Window(QtWidgets.QMainWindow): def __init__(self): super(Window,self).__init__() uic.loadUi('Welcome1.ui',self) self.title="Gender_Identifier" self.setWindowIcon(QtGui.QIcon("main-logo.png")) # self.browse_button.clicked.connect(self.setimage) # self.roi_button.clicked.connect(self.crop) self.work_IMAGE=None self.browse_button.clicked.connect(self.setimage) self.roi_button.clicked.connect(self.crop) button=QPushButton("close",self) button.clicked.connect(self.close) self.InitWindow() #IMAGE=self.set_image() def InitWindow(self): self.statusBar().showMessage("This is a simple status bar") self.setWindowTitle(self.title) def file(self): fileName ,_ =QtWidgets.QFileDialog.getOpenFileName(None,"Select Image", "D:\python_data\interface","Image Files (*.png *.jpg)") return fileName def setimage(self): fileName ,_ =QtWidgets.QFileDialog.getOpenFileName(None,"Select Image", "D:\python_data\interface\images\preprocessed","Image Files (*.png *.jpg)") if fileName: #pixmap object pixmap=QtGui.QPixmap(fileName) pixmap=pixmap.scaled(self.browse_label.width(),self.browse_label.height(),QtCore.Qt.KeepAspectRatio) self.browse_label.setPixmap(pixmap) self.browse_label.setAlignment(QtCore.Qt.AlignCenter) if(fileName): self.work_IMAGE=fileName def crop(self): if(self.work_IMAGE): file=self.work_IMAGE img = cv2.imread(file, 0) height,width=img.shape[:2] start_row,strt_col=int(height*.40),int(width*.15) end_row,end_col=int(height*.60),int(width*.90) croped=img[start_row:end_row,strt_col:end_col].copy() image = QtGui.QImage(croped, croped.shape[0], croped.shape[1], QtGui.QImage.Format_Indexed8) pixmap = QtGui.QPixmap(image) print(type(image)) print(type(pixmap)) print(type(croped)) #cv2.imshow("img",croped) pixmap=pixmap.scaled(self.roi_label.width(),self.roi_label.height(),QtCore.Qt.KeepAspectRatio) self.roi_label.setPixmap(pixmap) self.roi_label.setAlignment(QtCore.Qt.AlignCenter) if __name__=='__main__': App=QtWidgets.QApplication(sys.argv) window=Window() # IMAGE=window.setimage() #window.crop(IMAGE) # IMAGE_1=IMAGE #print(IMAGE) #print(IMAGE_1) window.show() sys.exit(App.exec_())
对此我非常感谢。我尽我所能进行搜索,但未找到满意的解决方案我附上图片以更清楚地说明问题
我是PyQt5的新手,我正尝试在(browse_label)中显示由browser_button选择的图像,当用户单击crop_button时,它将裁剪该图像。.但是当我转换时(numpy ...
setimage
和crop
是实例方法,所以它们的第一个参数应该是类实例本身,即应将它们定义为def setimage(self, filename)
和def crop(self, filename)
。