pyqt 水果识别完整代码
时间: 2024-04-28 18:17:31 浏览: 7
PyQt是一个用于创建图形用户界面(GUI)的Python库,它是基于Qt框架的Python绑定。水果识别是一个涉及图像处理和机器学习的任务,下面是一个简单的PyQt水果识别的完整代码示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QPixmap
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing import image
# 加载模型
model = tf.keras.models.load_model('fruit_model.h5')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Fruit Recognition")
self.setGeometry(100, 100, 400, 400)
self.label = QLabel(self)
self.label.setGeometry(50, 50, 300, 300)
self.button = QPushButton("Select Image", self)
self.button.setGeometry(150, 350, 100, 30)
self.button.clicked.connect(self.select_image)
def select_image(self):
file_dialog = QFileDialog()
file_path = file_dialog.getOpenFileName(self, 'Select Image')
if file_path:
self.process_image(file_path)
def process_image(self, file_path):
img = cv2.imread(file_path)
img = cv2.resize(img, (100, 100))
img = np.expand_dims(img, axis=0)
img = img / 255.0
prediction = model.predict(img)
fruit_classes = ['apple', 'banana', 'orange']
predicted_class = fruit_classes[np.argmax(prediction)]
pixmap = QPixmap(file_path)
self.label.setPixmap(pixmap.scaled(300, 300))
self.label.setScaledContents(True)
result_label = QLabel(self)
result_label.setGeometry(50, 10, 300, 30)
result_label.setText(f"Predicted Fruit: {predicted_class}")
result_label.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个代码示例创建了一个简单的PyQt窗口,其中包含一个用于选择图像的按钮和一个用于显示图像和预测结果的标签。当用户点击选择图像按钮时,会弹出文件对话框,用户可以选择要识别的水果图像。选择图像后,代码会将图像加载并进行预处理,然后使用预训练的模型进行水果识别,并在标签上显示预测结果。