前言:
现在朋友们对“img怎么设置图片的自适应”大致比较重视,兄弟们都需要剖析一些“img怎么设置图片的自适应”的相关内容。那么小编同时在网络上汇集了一些有关“img怎么设置图片的自适应””的相关知识,希望朋友们能喜欢,小伙伴们快快来学习一下吧!可以不用再担心PyQt的版权问题,因为PySide来了,完全可以代替PyQt,PySide6的安装和测试可以参看:132.Python——PySide6:安装和VSCode中配置及使用。
本文主要继续使用测试一下PySide6,看看PySide6与PyQt5的在实际应用中有什么不同。
在前一文中,有讲过如何使用分类模型实现图像分类预测,可以参看:116.人工智能——基于Paddle的部署模型推理。
本文主要就是把图像分类模型预测,用PySide6做个可视化客户端,来体验一下PySide6。
先看一下运行效果
一、界面设计
主窗口界面上下两部分,上部分使用一个ListView和Label,用来列出图像文件和显示预测结果,下部分使用一个文本框,用来显示文本信息。子窗口仅一个Label,用来显示原图像。
二、业务代码
import sysfrom PySide6 import QtCore, QtGui, QtWidgetsfrom Ui_clsinfer import Ui_MainWindowfrom Ui_child import Ui_ChildrenWindowimport paddle_cls_infer as pdclsimport osclass MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) #子窗口用来显示原图像 self.child=ChildrenWindow() #设置图片控件的单击事件 self.lstimg.clicked.connect(self.on_lstimg_clicked) self.imgname="" lstimgpath=["选择文件夹"] #图片列表 curdir=os.path.abspath(os.path.dirname(__file__)) #列出当前目录下的所有图片 for root,dir,files in os.walk(curdir): for file in files: if file.endswith(".jpg") or file.endswith(".png"): lstimgpath.append(os.path.join(root,file)) #设置lstimg,lblimg的宽度和高度 self.lblimg.setAlignment(QtCore.Qt.AlignCenter) #设置lblimg的对齐方式 self.lstimg.setFixedSize(self.width()//3,self.height()-self.txtmsg.height()) self.lblimg.setFixedSize(self.width()-self.lstimg.width(),self.height()-self.txtmsg.height()) #设置txtmsg字体大小 self.txtmsg.setFontPointSize(14) #设置图片列表 self.lstimg.setModel(QtCore.QStringListModel(lstimgpath)) #图片列表单击事件 def on_lstimg_clicked(self,index): #获取选中的图片路径 self.imgname=self.lstimg.model().stringList()[index.row()] if self.imgname=="选择文件夹": dirname=QtWidgets.QFileDialog.getExistingDirectory(self,"选择文件夹",".") lstimgpath=["选择文件夹"] #图片列表 for root,dir,files in os.walk(dirname): for file in files: if file.endswith(".jpg") or file.endswith(".png"): lstimgpath.append(os.path.join(root,file)) #获取选中的图片路径,放入图片列表 self.lstimg.setModel(QtCore.QStringListModel(lstimgpath)) else: #获取图像的宽高 img=QtGui.QImage(self.imgname) h,w,c=img.height(),img.width(),img.format() #设置图像大小自适应控件大小 self.lblimg.setPixmap(QtGui.QPixmap.fromImage(img).scaled(self.lblimg.width(),self.lblimg.height(),QtCore.Qt.KeepAspectRatio)) #设置图像填充控件大小 #self.lblimg.setScaledContents(True) #显示图像路径 self.statusBar().showMessage(self.imgname) self.txtmsg.setText(self.imgname) #预测图像,返回预测结果 classid,classname,img0=pdcls.predict(self.imgname) self.txtmsg.setText("预测结果:"+classname) #bgr图像转QImage,显示图像 qimg=QtGui.QImage(img0.data,w,h,w*3,QtGui.QImage.Format_BGR888) self.lblimg.setPixmap(QtGui.QPixmap.fromImage(qimg).scaled(self.lblimg.width(),self.lblimg.height(),QtCore.Qt.KeepAspectRatio)) #显示子窗口,显示原图像 self.child.setWindowTitle("原图像") self.child.show() self.child.lblimg.setPixmap(QtGui.QPixmap.fromImage(img).scaled(self.child.lblimg.width(),self.child.lblimg.height(),QtCore.Qt.KeepAspectRatio)) #子窗口用来显示原图像 class ChildrenWindow(QtWidgets.QMainWindow,Ui_ChildrenWindow): def __init__(self): super().__init__() self.setupUi(self) self.lblimg.setAlignment(QtCore.Qt.AlignCenter) self.lblimg.setFixedSize(self.width(),self.height()-self.statusBar().height()) if __name__ == '__main__': app=QtWidgets.QApplication(sys.argv) mywin=MainWindow() mywin.setWindowTitle('Class Inference') mywin.show() sys.exit(app.exec())三、运行结果
从体验来看,PySide6完全兼容原来的PyQt5(一直在使用版本),所以用PySide6来取代PyQt5或PyQt6,完全是没有问题。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #img怎么设置图片的自适应