在python中利用h5模型调用摄像头识别水果并框出水果所在位置以及注明水果名称
时间: 2024-05-02 12:21:30 浏览: 156
深度学习大作业,利用CNN和MobileNetV2搭建的水果识别模型+源代码+文档说明+数据集+实验报告+内含多个其他实验
5星 · 资源好评率100%
以下是一个简单的示例代码,使用OpenCV和TensorFlow进行水果识别和边框绘制:
```python
import cv2
import numpy as np
import tensorflow as tf
import h5py
# 加载模型
model = tf.keras.models.load_model('fruit_classifier.h5')
# 水果类别名称
class_names = ['apple', 'banana', 'orange']
# 捕捉摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头帧
ret, frame = cap.read()
# 调整尺寸以适合模型输入
resized_frame = cv2.resize(frame, (224, 224))
# 将像素值标准化为0到1之间
normalized_frame = resized_frame / 255.0
# 扩展维度以适应模型输入
input_data = np.expand_dims(normalized_frame, axis=0)
# 使用模型进行预测
predictions = model.predict(input_data)
# 获取预测结果
predicted_class_index = np.argmax(predictions[0])
predicted_class_name = class_names[predicted_class_index]
predicted_class_prob = predictions[0][predicted_class_index]
# 在帧上绘制边框和标签
if predicted_class_prob > 0.8:
cv2.putText(frame, predicted_class_name, (20, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.rectangle(frame, (50, 50), (150, 150), (0, 255, 0), 3)
# 显示帧
cv2.imshow('Fruit Recognition', frame)
# 按q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在上面的代码中,我们首先加载了预先训练好的Keras模型文件`fruit_classifier.h5`,然后使用OpenCV捕获摄像头帧,并将其调整为模型输入所需的大小。接下来,我们使用模型进行预测,并根据预测结果在帧上绘制矩形边框和标签。最后,我们使用OpenCV显示帧,并等待用户按下q键退出。请注意,我们在预测阈值为0.8时才绘制边框和标签,以确保只有可靠的预测结果才被显示。
阅读全文