├── __init__.py ├── .idea ├── vcs.xml ├── misc.xml ├── inspectionProfiles │ ├── profiles_settings.xml │ └── Project_Default.xml ├── .gitignore ├── modules.xml └── garbage-classification-master.iml ├── README.md ├── test.py ├── .gitignore ├── garbage_ui.py ├── kid.py ├── main.py ├── kid.ui └── main.ui /__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /../../../../:\桌面\garbage-classification-master\.idea/dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Refuse-Classification-qt5 2 | 垃圾分类系统——基于PyQt5的前端界面 3 | 4 | # 垃圾分类系统训练算法及服务器端项目地址 5 | https://github.com/Vanish-Zeng/Refuse-Classification 6 | 7 | # 界面展示 8 | 9 | ![image-20210617070858657](https://i.loli.net/2021/06/17/bf3gW2unz8MGKdx.png) 10 | 11 | ![image-20210617071041814](https://i.loli.net/2021/06/17/oH35PTeyrlO81x6.png) 12 | -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | # !/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2021/6/9 20:28 4 | # @Author : zjw 5 | # @FileName: test.py 6 | # @Software: PyCharm 7 | # @Blog :https://www.cnblogs.com/vanishzeng/ 8 | 9 | import requests 10 | 11 | 12 | if __name__ == '__main__': 13 | # request = requests.get("http://127.0.0.1:5000/upload") 14 | # print(request) 15 | # print(request.content) 16 | str = "玻璃垃圾 可回收垃圾" 17 | strs = str.split(" ") 18 | print(strs[0]) 19 | -------------------------------------------------------------------------------- /.idea/garbage-classification-master.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /garbage_ui.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from PyQt5.QtWidgets import QMessageBox 3 | from main import * 4 | from kid import * 5 | import requests 6 | 7 | 8 | class MainShow(QtWidgets.QWidget, Ui_Main_Dialog): 9 | def __init__(self): 10 | super(MainShow, self).__init__() 11 | self.setupUi(self) 12 | # 上传图片 13 | self.pushButton_2.clicked.connect(self.ChoosePath) 14 | # 开始识别 15 | self.pushButton.clicked.connect(self.Recognition) 16 | self.test_path = '' 17 | 18 | def ChoosePath(self): 19 | file_name = QtWidgets.QFileDialog.getOpenFileName(self, "打开图片", self.test_path, "图片(*.jpg)") 20 | print(file_name[0]) 21 | self.test_path = file_name[0] 22 | # 显示路径 23 | self.lineEdit_2.setText(self.test_path) 24 | # 显示待测图片 25 | self.label_4.setPixmap(QtGui.QPixmap(self.test_path)) 26 | 27 | # 清空不相关内容 28 | self.lineEdit.clear() 29 | 30 | def Recognition(self): 31 | # 存获取的地址 32 | input = self.lineEdit_2.text() 33 | if input == "": 34 | print(QMessageBox.warning(self, "警告", "未插入图片!\n无法进行垃圾识别!", QMessageBox.Yes, QMessageBox.Yes)) 35 | return 36 | else: 37 | url = "http://127.0.0.1:5000/upload" 38 | files = {'file': open(input, 'rb')} 39 | r = requests.post(url, files=files) 40 | str = bytes.decode(r.content) 41 | print(str) 42 | garbage_type = str.split(" ") 43 | 44 | self.lineEdit.setText(garbage_type[1]) 45 | print(QMessageBox.information(self, "成功识别垃圾类型!", "垃圾识别结果为:" + garbage_type[0], QMessageBox.Yes, QMessageBox.Yes)) 46 | 47 | 48 | class KidShow(QtWidgets.QWidget, Ui_Dialog): 49 | def __init__(self): 50 | super(KidShow, self).__init__() 51 | self.setupUi(self) 52 | # 上传图片 53 | self.pushButton.clicked.connect(self.ShowOtherTrash) 54 | # 开始识别 55 | self.pushButton_2.clicked.connect(self.ShowRecyclableTrash) 56 | 57 | def ShowRecyclableTrash(self): 58 | self.label.setText("

可回收垃圾介绍

") 60 | self.label_2.setText("

可回收物主要包括废纸、塑料、玻璃、金属和布料五大类。

1. 废纸:主要包括报纸、期刊、图书、各种包装纸等。但是,要注意

纸巾和厕所纸由于水溶性太强不可回收。

2. " 65 | "塑料:各种塑料袋、塑料泡沫、塑料包装(快递包装纸是其他垃圾/

干垃圾)、一次性塑料餐盒餐具、硬塑料、塑料牙刷、塑料杯子、矿

泉水瓶等。

3. 玻璃:主要包括各种玻璃瓶、碎玻璃片、暖瓶等。(镜子是其他垃

圾/干垃圾)

4. 金属物:主要包括易拉罐、罐头盒等。

5. 布料:主要包括废弃衣服、桌布、洗脸巾、书包、鞋等。


这些垃圾通过综合处理回收利用,可以减少污染,节省资源。如每回

收1吨废纸可造好纸850公斤,节省木材300公斤,比等量生产减少污

染74%;每回收1吨塑料饮料瓶可获得0.7吨二级原料;每回收1吨废钢

铁可炼好钢0.9吨,比用矿石冶炼节约成本47%,减少空气污染75%,

减少97%的水污染和固体废物。

") 80 | pixmap = QPixmap("img/可回收垃圾.jpg") 81 | self.label_3.setScaledContents(True) 82 | self.label_3.setPixmap(pixmap) 83 | 84 | def ShowOtherTrash(self): 85 | self.label.setText("

干垃圾介绍

") 87 | self.label_2.setText("

其他垃圾(上海称干垃圾)包括除上述几类垃圾之外的砖瓦陶瓷、渣

土、卫生间废纸、纸巾等难以回收的废弃物及尘土、食品袋(盒)。

采取卫生填埋可有效减少对地下水、地表水、土壤及空气的污染。大棒骨因为“难腐蚀”被列入“其它垃圾”。玉米核、坚果壳、果

核、鸡骨等则是餐厨垃圾。


1. 卫生纸:厕纸、卫生纸遇水即溶,不算可回收的“纸张”,类似的

还有烟盒等。


2. 餐厨垃圾装袋:常用的塑料袋,即使是可以降解的也远比餐厨垃圾

更难腐蚀。此外塑料袋本身是可回收垃圾。正确做法应该是将餐厨垃

圾倒入垃圾桶,塑料袋另扔进“可回收垃圾”桶。


3. " 100 | "果壳:在垃圾分类中,“果壳瓜皮”的标识就是花生壳,的确属于


厨余垃圾。家里用剩的废弃食用油,也归类在“厨余垃圾”。
4. " 102 | "尘土:在垃圾分类中,尘土属于“其它垃圾”,但残枝落叶属于

“厨余垃圾”,包括家里开败的鲜花等。

") 104 | pixmap = QPixmap("img/干垃圾.jpg") 105 | self.label_3.setScaledContents(True) 106 | self.label_3.setPixmap(pixmap) 107 | 108 | 109 | if __name__ == '__main__': 110 | app = QtWidgets.QApplication(sys.argv) 111 | # 实例化主窗口 112 | main = QMainWindow() 113 | main_ui = Ui_Main_Dialog() 114 | main_ui.setupUi(main) 115 | main = MainShow() 116 | main.setWindowTitle("垃垃队识垃圾") 117 | 118 | # 实例化子窗口 119 | child = QDialog() 120 | child.setWindowTitle("垃垃队识垃圾") 121 | child_ui = Ui_Dialog() 122 | child_ui.setupUi(child) 123 | child1 = KidShow() 124 | # 按钮绑定事件 125 | btn = main.pushButton_3 126 | btn.clicked.connect(child1.show) 127 | 128 | # 显示主窗口 129 | main.show() 130 | sys.exit(app.exec_()) 131 | -------------------------------------------------------------------------------- /kid.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'kid.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | from PyQt5.QtGui import * 11 | from PyQt5.QtWidgets import * 12 | 13 | 14 | class Ui_Dialog(object): 15 | def setupUi(self, Dialog): 16 | Dialog.setObjectName("Dialog") 17 | Dialog.resize(981, 794) 18 | palette = QtGui.QPalette() 19 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 20 | brush.setStyle(QtCore.Qt.SolidPattern) 21 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) 22 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 23 | brush.setStyle(QtCore.Qt.SolidPattern) 24 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) 25 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 26 | brush.setStyle(QtCore.Qt.SolidPattern) 27 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) 28 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 29 | brush.setStyle(QtCore.Qt.SolidPattern) 30 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) 31 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 32 | brush.setStyle(QtCore.Qt.SolidPattern) 33 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) 34 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 35 | brush.setStyle(QtCore.Qt.SolidPattern) 36 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) 37 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 38 | brush.setStyle(QtCore.Qt.SolidPattern) 39 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) 40 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 41 | brush.setStyle(QtCore.Qt.SolidPattern) 42 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) 43 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 44 | brush.setStyle(QtCore.Qt.SolidPattern) 45 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) 46 | Dialog.setPalette(palette) 47 | Dialog.setStyleSheet("QDialog{background-color:rgb( 135,206,250);}") 48 | self.label = QtWidgets.QLabel(Dialog) 49 | self.label.setGeometry(QtCore.QRect(140, 20, 721, 111)) 50 | palette = QtGui.QPalette() 51 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 52 | brush.setStyle(QtCore.Qt.SolidPattern) 53 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) 54 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 55 | brush.setStyle(QtCore.Qt.NoBrush) 56 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) 57 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 58 | brush.setStyle(QtCore.Qt.SolidPattern) 59 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) 60 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 61 | brush.setStyle(QtCore.Qt.NoBrush) 62 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) 63 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) 64 | brush.setStyle(QtCore.Qt.SolidPattern) 65 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) 66 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 67 | brush.setStyle(QtCore.Qt.NoBrush) 68 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) 69 | self.label.setPalette(palette) 70 | font = QtGui.QFont() 71 | font.setFamily("Arial") 72 | font.setPointSize(28) 73 | font.setBold(True) 74 | font.setWeight(75) 75 | self.label.setFont(font) 76 | self.label.setCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor)) 77 | self.label.setObjectName("label") 78 | self.label_2 = QtWidgets.QLabel(Dialog) 79 | self.label_2.setGeometry(QtCore.QRect(230, 130, 731, 591)) 80 | self.label_2.setObjectName("label_2") 81 | self.label_3 = QtWidgets.QLabel(Dialog) 82 | self.label_3.setGeometry(QtCore.QRect(0, 130, 211, 371)) 83 | self.label_3.setObjectName("label_3") 84 | self.label_3.setPixmap(QPixmap("img/可回收垃圾.jpg")) 85 | self.label_3.setScaledContents(True) 86 | self.pushButton = QtWidgets.QPushButton(Dialog) 87 | self.pushButton.setGeometry(QtCore.QRect(20, 60, 111, 51)) 88 | self.pushButton.setMinimumSize(QtCore.QSize(111, 51)) 89 | font = QtGui.QFont() 90 | font.setFamily("Agency FB") 91 | font.setPointSize(11) 92 | font.setBold(False) 93 | font.setWeight(50) 94 | self.pushButton.setFont(font) 95 | self.pushButton.setLayoutDirection(QtCore.Qt.RightToLeft) 96 | self.pushButton.setStyleSheet("QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); }") 97 | self.pushButton.setIconSize(QtCore.QSize(30, 30)) 98 | self.pushButton.setObjectName("pushButton") 99 | self.pushButton_2 = QtWidgets.QPushButton(Dialog) 100 | self.pushButton_2.setGeometry(QtCore.QRect(20, 10, 111, 51)) 101 | self.pushButton_2.setMinimumSize(QtCore.QSize(111, 51)) 102 | font = QtGui.QFont() 103 | font.setFamily("Agency FB") 104 | font.setPointSize(11) 105 | font.setBold(False) 106 | font.setWeight(50) 107 | self.pushButton_2.setFont(font) 108 | self.pushButton_2.setLayoutDirection(QtCore.Qt.RightToLeft) 109 | self.pushButton_2.setStyleSheet("QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); }") 110 | self.pushButton_2.setIconSize(QtCore.QSize(30, 30)) 111 | self.pushButton_2.setObjectName("pushButton_2") 112 | 113 | self.retranslateUi(Dialog) 114 | QtCore.QMetaObject.connectSlotsByName(Dialog) 115 | 116 | def retranslateUi(self, Dialog): 117 | _translate = QtCore.QCoreApplication.translate 118 | Dialog.setWindowTitle(_translate("Dialog", "垃圾种类科普")) 119 | self.label.setText(_translate("Dialog", "

可回收垃圾介绍

")) 120 | self.label_2.setText(_translate("Dialog", "

可回收物主要包括废纸、塑料、玻璃、金属和布料五大类。

1. 废纸:主要包括报纸、期刊、图书、各种包装纸等。但是,要注意

纸巾和厕所纸由于水溶性太强不可回收。

2. 塑料:各种塑料袋、塑料泡沫、塑料包装(快递包装纸是其他垃圾/

干垃圾)、一次性塑料餐盒餐具、硬塑料、塑料牙刷、塑料杯子、矿

泉水瓶等。

3. 玻璃:主要包括各种玻璃瓶、碎玻璃片、暖瓶等。(镜子是其他垃

圾/干垃圾)

4. 金属物:主要包括易拉罐、罐头盒等。

5. 布料:主要包括废弃衣服、桌布、洗脸巾、书包、鞋等。


这些垃圾通过综合处理回收利用,可以减少污染,节省资源。如每回

收1吨废纸可造好纸850公斤,节省木材300公斤,比等量生产减少污

染74%;每回收1吨塑料饮料瓶可获得0.7吨二级原料;每回收1吨废钢

铁可炼好钢0.9吨,比用矿石冶炼节约成本47%,减少空气污染75%,

减少97%的水污染和固体废物。

")) 121 | self.label_3.setText(_translate("Dialog", "TextLabel")) 122 | self.pushButton.setText(_translate("Dialog", "干垃圾")) 123 | self.pushButton_2.setText(_translate("Dialog", "可回收垃圾")) 124 | 125 | 126 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'main.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | 12 | class Ui_Main_Dialog(object): 13 | def setupUi(self, Dialog): 14 | Dialog.setObjectName("Dialog") 15 | Dialog.resize(912, 736) 16 | Dialog.setMinimumSize(QtCore.QSize(912, 736)) 17 | Dialog.setMaximumSize(QtCore.QSize(912, 736)) 18 | palette = QtGui.QPalette() 19 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 20 | brush.setStyle(QtCore.Qt.SolidPattern) 21 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) 22 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 23 | brush.setStyle(QtCore.Qt.SolidPattern) 24 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) 25 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 26 | brush.setStyle(QtCore.Qt.SolidPattern) 27 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) 28 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 29 | brush.setStyle(QtCore.Qt.SolidPattern) 30 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) 31 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 32 | brush.setStyle(QtCore.Qt.SolidPattern) 33 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) 34 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 35 | brush.setStyle(QtCore.Qt.SolidPattern) 36 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) 37 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 38 | brush.setStyle(QtCore.Qt.SolidPattern) 39 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) 40 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 41 | brush.setStyle(QtCore.Qt.SolidPattern) 42 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) 43 | brush = QtGui.QBrush(QtGui.QColor(135, 206, 250)) 44 | brush.setStyle(QtCore.Qt.SolidPattern) 45 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) 46 | Dialog.setPalette(palette) 47 | font = QtGui.QFont() 48 | font.setFamily("Arial Narrow") 49 | font.setPointSize(10) 50 | Dialog.setFont(font) 51 | Dialog.setLayoutDirection(QtCore.Qt.LeftToRight) 52 | Dialog.setAutoFillBackground(False) 53 | Dialog.setStyleSheet("QDialog{background-color:rgb( 135,206,250);}") 54 | self.label = QtWidgets.QLabel(Dialog) 55 | self.label.setGeometry(QtCore.QRect(20, 30, 861, 101)) 56 | palette = QtGui.QPalette() 57 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 58 | brush.setStyle(QtCore.Qt.SolidPattern) 59 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) 60 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 61 | brush.setStyle(QtCore.Qt.NoBrush) 62 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) 63 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 64 | brush.setStyle(QtCore.Qt.SolidPattern) 65 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) 66 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 67 | brush.setStyle(QtCore.Qt.NoBrush) 68 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) 69 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) 70 | brush.setStyle(QtCore.Qt.SolidPattern) 71 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) 72 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128)) 73 | brush.setStyle(QtCore.Qt.NoBrush) 74 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) 75 | self.label.setPalette(palette) 76 | font = QtGui.QFont() 77 | font.setFamily("SimSun") 78 | font.setPointSize(15) 79 | font.setBold(True) 80 | font.setWeight(75) 81 | self.label.setFont(font) 82 | self.label.setCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor)) 83 | self.label.setStyleSheet("") 84 | self.label.setObjectName("label") 85 | self.label_2 = QtWidgets.QLabel(Dialog) 86 | self.label_2.setGeometry(QtCore.QRect(50, 620, 161, 41)) 87 | self.label_2.setStyleSheet("QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(200,101,102);}") 88 | self.label_2.setObjectName("label_2") 89 | self.lineEdit = QtWidgets.QLineEdit(Dialog) 90 | self.lineEdit.setEnabled(False) 91 | self.lineEdit.setGeometry(QtCore.QRect(220, 620, 441, 41)) 92 | self.lineEdit.setStyleSheet("QLineEdit {background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px}") 93 | self.lineEdit.setObjectName("lineEdit") 94 | self.lineEdit_2 = QtWidgets.QLineEdit(Dialog) 95 | self.lineEdit_2.setGeometry(QtCore.QRect(220, 140, 441, 41)) 96 | self.lineEdit_2.setStyleSheet("QLineEdit {background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px}") 97 | self.lineEdit_2.setObjectName("lineEdit_2") 98 | self.label_4 = QtWidgets.QLabel(Dialog) 99 | self.label_4.setGeometry(QtCore.QRect(150, 200, 550, 400)) 100 | self.label_4.setContextMenuPolicy(QtCore.Qt.PreventContextMenu) 101 | self.label_4.setAutoFillBackground(False) 102 | self.label_4.setStyleSheet("QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(255,255,255);}") 103 | self.label_4.setObjectName("label_4") 104 | self.label_4.setScaledContents(True) 105 | self.pushButton = QtWidgets.QPushButton(Dialog) 106 | self.pushButton.setGeometry(QtCore.QRect(730, 360, 111, 51)) 107 | self.pushButton.setMinimumSize(QtCore.QSize(111, 51)) 108 | font = QtGui.QFont() 109 | font.setFamily("Agency FB") 110 | font.setPointSize(11) 111 | font.setBold(False) 112 | font.setWeight(50) 113 | self.pushButton.setFont(font) 114 | self.pushButton.setLayoutDirection(QtCore.Qt.RightToLeft) 115 | self.pushButton.setStyleSheet("QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); }") 116 | self.pushButton.setIconSize(QtCore.QSize(30, 30)) 117 | self.pushButton.setObjectName("pushButton") 118 | self.pushButton_2 = QtWidgets.QPushButton(Dialog) 119 | self.pushButton_2.setGeometry(QtCore.QRect(700, 130, 111, 51)) 120 | font = QtGui.QFont() 121 | font.setFamily("Agency FB") 122 | font.setPointSize(11) 123 | font.setBold(False) 124 | font.setWeight(50) 125 | self.pushButton_2.setFont(font) 126 | self.pushButton_2.setLayoutDirection(QtCore.Qt.RightToLeft) 127 | self.pushButton_2.setStyleSheet("QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(240,128,128); }") 128 | self.pushButton_2.setObjectName("pushButton_2") 129 | self.label_3 = QtWidgets.QLabel(Dialog) 130 | self.label_3.setGeometry(QtCore.QRect(50, 140, 161, 41)) 131 | self.label_3.setStyleSheet("QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(200,101,102);}") 132 | self.label_3.setObjectName("label_3") 133 | self.label_5 = QtWidgets.QLabel(Dialog) 134 | self.label_5.setGeometry(QtCore.QRect(0, 710, 911, 31)) 135 | font = QtGui.QFont() 136 | font.setFamily("Bahnschrift") 137 | font.setPointSize(16) 138 | self.label_5.setFont(font) 139 | self.label_5.setObjectName("label_5") 140 | self.pushButton_3 = QtWidgets.QPushButton(Dialog) 141 | self.pushButton_3.setGeometry(QtCore.QRect(680, 610, 111, 51)) 142 | self.pushButton_3.setMinimumSize(QtCore.QSize(111, 51)) 143 | font = QtGui.QFont() 144 | font.setFamily("Agency FB") 145 | font.setPointSize(11) 146 | font.setBold(False) 147 | font.setWeight(50) 148 | self.pushButton_3.setFont(font) 149 | self.pushButton_3.setLayoutDirection(QtCore.Qt.LeftToRight) 150 | self.pushButton_3.setStyleSheet("QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(85, 170, 127); }") 151 | self.pushButton_3.setIconSize(QtCore.QSize(30, 30)) 152 | self.pushButton_3.setObjectName("pushButton_3") 153 | 154 | self.retranslateUi(Dialog) 155 | QtCore.QMetaObject.connectSlotsByName(Dialog) 156 | 157 | def retranslateUi(self, Dialog): 158 | _translate = QtCore.QCoreApplication.translate 159 | Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 160 | self.label.setText(_translate("Dialog", "

垃垃队识垃圾~

")) 161 | self.label_2.setText(_translate("Dialog", "

垃圾类别:

")) 162 | self.label_4.setText(_translate("Dialog", "请上传待测垃圾图片")) 163 | self.pushButton.setText(_translate("Dialog", "开始识别")) 164 | self.pushButton_2.setText(_translate("Dialog", "上传图片")) 165 | self.label_3.setText(_translate("Dialog", "

图片路径:

")) 166 | self.label_5.setText(_translate("Dialog", "

©2021 垃垃队立大功

")) 167 | self.pushButton_3.setText(_translate("Dialog", "垃圾科普")) 168 | 169 | 170 | -------------------------------------------------------------------------------- /kid.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 981 10 | 794 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 135 20 | 206 21 | 250 22 | 23 | 24 | 25 | 26 | 27 | 28 | 135 29 | 206 30 | 250 31 | 32 | 33 | 34 | 35 | 36 | 37 | 135 38 | 206 39 | 250 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 135 49 | 206 50 | 250 51 | 52 | 53 | 54 | 55 | 56 | 57 | 135 58 | 206 59 | 250 60 | 61 | 62 | 63 | 64 | 65 | 66 | 135 67 | 206 68 | 250 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 135 78 | 206 79 | 250 80 | 81 | 82 | 83 | 84 | 85 | 86 | 135 87 | 206 88 | 250 89 | 90 | 91 | 92 | 93 | 94 | 95 | 135 96 | 206 97 | 250 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | Dialog 106 | 107 | 108 | QDialog{background-color:rgb( 135,206,250);} 109 | 110 | 111 | 112 | 113 | 140 114 | 20 115 | 721 116 | 111 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 0 126 | 0 127 | 0 128 | 129 | 130 | 131 | 132 | 133 | 134 | 0 135 | 0 136 | 0 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 0 146 | 0 147 | 0 148 | 149 | 150 | 151 | 152 | 153 | 154 | 0 155 | 0 156 | 0 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 120 166 | 120 167 | 120 168 | 169 | 170 | 171 | 172 | 173 | 174 | 0 175 | 0 176 | 0 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | Arial 186 | 28 187 | 75 188 | true 189 | 190 | 191 | 192 | UpArrowCursor 193 | 194 | 195 | <html><head/><body><p align="center"><span style=" font-size:36pt; color:#428663;">可回收垃圾介绍</span></p></body></html> 196 | 197 | 198 | 199 | 200 | 201 | 230 202 | 130 203 | 731 204 | 591 205 | 206 | 207 | 208 | <html><head/><body><p><span style=" font-size:12pt; font-weight:600;">可回收物主要包括废纸、塑料、玻璃、金属和布料五大类。</span></p><p><span style=" font-size:12pt; font-weight:600;">1. 废纸:主要包括报纸、期刊、图书、各种包装纸等。但是,要注意</span></p><p><span style=" font-size:12pt; font-weight:600;">纸巾和厕所纸由于水溶性太强不可回收。</span></p><p><span style=" font-size:12pt; font-weight:600;">2. 塑料:各种塑料袋、塑料泡沫、塑料包装(快递包装纸是其他垃圾/</span></p><p><span style=" font-size:12pt; font-weight:600;">干垃圾)、一次性塑料餐盒餐具、硬塑料、塑料牙刷、塑料杯子、矿</span></p><p><span style=" font-size:12pt; font-weight:600;">泉水瓶等。</span></p><p><span style=" font-size:12pt; font-weight:600;">3. 玻璃:主要包括各种玻璃瓶、碎玻璃片、暖瓶等。(镜子是其他垃</span></p><p><span style=" font-size:12pt; font-weight:600;">圾/干垃圾)</span></p><p><span style=" font-size:12pt; font-weight:600;">4. 金属物:主要包括易拉罐、罐头盒等。</span></p><p><span style=" font-size:12pt; font-weight:600;">5. 布料:主要包括废弃衣服、桌布、洗脸巾、书包、鞋等。</span></p><p><span style=" font-size:12pt;"><br/></span></p><p><span style=" font-size:12pt; font-weight:600;">这些垃圾通过综合处理回收利用,可以减少污染,节省资源。如每回</span></p><p><span style=" font-size:12pt; font-weight:600;">收1吨废纸可造好纸850公斤,节省木材300公斤,比等量生产减少污</span></p><p><span style=" font-size:12pt; font-weight:600;">染74%;每回收1吨塑料饮料瓶可获得0.7吨二级原料;每回收1吨废钢</span></p><p><span style=" font-size:12pt; font-weight:600;">铁可炼好钢0.9吨,比用矿石冶炼节约成本47%,减少空气污染75%,</span></p><p><span style=" font-size:12pt; font-weight:600;">减少97%的水污染和固体废物。</span></p></body></html> 209 | 210 | 211 | 212 | 213 | 214 | 0 215 | 130 216 | 211 217 | 371 218 | 219 | 220 | 221 | TextLabel 222 | 223 | 224 | 225 | 226 | 227 | 20 228 | 60 229 | 111 230 | 51 231 | 232 | 233 | 234 | 235 | 111 236 | 51 237 | 238 | 239 | 240 | 241 | Agency FB 242 | 11 243 | 50 244 | false 245 | 246 | 247 | 248 | Qt::RightToLeft 249 | 250 | 251 | QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); } 252 | 253 | 254 | 干垃圾 255 | 256 | 257 | 258 | 30 259 | 30 260 | 261 | 262 | 263 | 264 | 265 | 266 | 20 267 | 10 268 | 111 269 | 51 270 | 271 | 272 | 273 | 274 | 111 275 | 51 276 | 277 | 278 | 279 | 280 | Agency FB 281 | 11 282 | 50 283 | false 284 | 285 | 286 | 287 | Qt::RightToLeft 288 | 289 | 290 | QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); } 291 | 292 | 293 | 可回收垃圾 294 | 295 | 296 | 297 | 30 298 | 30 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | -------------------------------------------------------------------------------- /main.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 912 10 | 736 11 | 12 | 13 | 14 | 15 | 912 16 | 736 17 | 18 | 19 | 20 | 21 | 912 22 | 736 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 135 32 | 206 33 | 250 34 | 35 | 36 | 37 | 38 | 39 | 40 | 135 41 | 206 42 | 250 43 | 44 | 45 | 46 | 47 | 48 | 49 | 135 50 | 206 51 | 250 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 135 61 | 206 62 | 250 63 | 64 | 65 | 66 | 67 | 68 | 69 | 135 70 | 206 71 | 250 72 | 73 | 74 | 75 | 76 | 77 | 78 | 135 79 | 206 80 | 250 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 135 90 | 206 91 | 250 92 | 93 | 94 | 95 | 96 | 97 | 98 | 135 99 | 206 100 | 250 101 | 102 | 103 | 104 | 105 | 106 | 107 | 135 108 | 206 109 | 250 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | Arial Narrow 119 | 10 120 | 121 | 122 | 123 | Dialog 124 | 125 | 126 | Qt::LeftToRight 127 | 128 | 129 | false 130 | 131 | 132 | QDialog{background-color:rgb( 135,206,250);} 133 | 134 | 135 | 136 | 137 | 20 138 | 30 139 | 861 140 | 101 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 0 150 | 0 151 | 0 152 | 153 | 154 | 155 | 156 | 157 | 158 | 0 159 | 0 160 | 0 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 0 170 | 0 171 | 0 172 | 173 | 174 | 175 | 176 | 177 | 178 | 0 179 | 0 180 | 0 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 120 190 | 120 191 | 120 192 | 193 | 194 | 195 | 196 | 197 | 198 | 0 199 | 0 200 | 0 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | SimSun 210 | 15 211 | 75 212 | true 213 | 214 | 215 | 216 | UpArrowCursor 217 | 218 | 219 | 220 | 221 | 222 | <html><head/><body><p align="center"><span style=" font-size:48pt; font-style:italic; text-decoration: underline;">垃垃队立大功~</span></p></body></html> 223 | 224 | 225 | 226 | 227 | 228 | 50 229 | 620 230 | 161 231 | 41 232 | 233 | 234 | 235 | QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(200,101,102);} 236 | 237 | 238 | <html><head/><body><p><span style=" font-size:18pt;">识别结果:</span></p></body></html> 239 | 240 | 241 | 242 | 243 | false 244 | 245 | 246 | 247 | 220 248 | 620 249 | 441 250 | 41 251 | 252 | 253 | 254 | QLineEdit {background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} 255 | 256 | 257 | 258 | 259 | 260 | 220 261 | 140 262 | 441 263 | 41 264 | 265 | 266 | 267 | QLineEdit {background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} 268 | 269 | 270 | 271 | 272 | 273 | 150 274 | 200 275 | 550 276 | 400 277 | 278 | 279 | 280 | Qt::PreventContextMenu 281 | 282 | 283 | false 284 | 285 | 286 | QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(255,255,255);} 287 | 288 | 289 | 请上传待测垃圾图片 290 | 291 | 292 | 293 | 294 | 295 | 730 296 | 360 297 | 111 298 | 51 299 | 300 | 301 | 302 | 303 | 111 304 | 51 305 | 306 | 307 | 308 | 309 | Agency FB 310 | 11 311 | 50 312 | false 313 | 314 | 315 | 316 | Qt::RightToLeft 317 | 318 | 319 | QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(30,144,255); } 320 | 321 | 322 | 开始识别 323 | 324 | 325 | 326 | 30 327 | 30 328 | 329 | 330 | 331 | 332 | 333 | 334 | 700 335 | 130 336 | 111 337 | 51 338 | 339 | 340 | 341 | 342 | Agency FB 343 | 11 344 | 50 345 | false 346 | 347 | 348 | 349 | Qt::RightToLeft 350 | 351 | 352 | QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(240,128,128); } 353 | 354 | 355 | 上传图片 356 | 357 | 358 | 359 | 360 | 361 | 50 362 | 140 363 | 161 364 | 41 365 | 366 | 367 | 368 | QLabel{border:2px groove gray;border-radius:10px;background-color:rgb(200,101,102);} 369 | 370 | 371 | <html><head/><body><p><span style=" font-size:18pt;">图片路径:</span></p></body></html> 372 | 373 | 374 | 375 | 376 | 377 | 0 378 | 710 379 | 911 380 | 31 381 | 382 | 383 | 384 | 385 | Bahnschrift 386 | 16 387 | 388 | 389 | 390 | <html><head/><body><p align="center"><span style=" font-size:10pt; color:#306148;">©2021 垃垃队立大功</span></p></body></html> 391 | 392 | 393 | 394 | 395 | 396 | 680 397 | 610 398 | 111 399 | 51 400 | 401 | 402 | 403 | 404 | 111 405 | 51 406 | 407 | 408 | 409 | 410 | Agency FB 411 | 11 412 | 50 413 | false 414 | 415 | 416 | 417 | Qt::LeftToRight 418 | 419 | 420 | QPushButton{background:#e6f0fa;border:2px groove gray;border-radius:10px;padding:2px 4px} QPushButton:hover { background-color: rgb(85, 170, 127); } 421 | 422 | 423 | 垃圾科普 424 | 425 | 426 | 427 | 30 428 | 30 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | --------------------------------------------------------------------------------