在pycharm中利用h5模型调用摄像头识别多类水果并框选出水果位置以及标注水果名称
时间: 2023-11-18 11:02:26 浏览: 107
首先需要安装相关的库,包括OpenCV、TensorFlow、Keras等。可以使用以下命令进行安装:
```
pip install opencv-python
pip install tensorflow
pip install keras
```
接下来,需要准备好训练好的水果识别模型。假设我们已经有一个名为“fruit_model.h5”的模型文件。
接下来,可以使用以下代码调用摄像头,并利用模型进行水果识别并标注:
```python
import cv2
from keras.models import load_model
import numpy as np
# 加载模型
model = load_model('fruit_model.h5')
# 定义标签字典
labels_dict = {0: 'apple', 1: 'banana', 2: 'orange'}
# 启动摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头数据
ret, frame = cap.read()
# 转换为RGB格式
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 缩放图像大小
frame = cv2.resize(frame, (224, 224))
# 归一化像素值
frame = frame / 255.0
# 添加一个维度以适应模型输入
frame = np.expand_dims(frame, axis=0)
# 进行水果识别
predictions = model.predict(frame)
# 获取最高概率的水果类别
label_index = np.argmax(predictions)
label = labels_dict[label_index]
# 获取水果位置
bbox = cv2.selectROI('frame', frame, False)
x, y, w, h = bbox
# 绘制框选矩形和标签
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(frame, label, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示结果
cv2.imshow('frame', frame)
# 按下q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
运行代码后,会弹出摄像头窗口,并进行水果识别。可以用鼠标拖动框选水果并显示识别结果。
注意:由于摄像头的分辨率不同,可能需要根据实际情况调整图像大小或框选矩形的位置和大小。
阅读全文