yolov8超市商品识别代码示例
时间: 2025-05-24 13:11:07 浏览: 18
### 基于YOLOv8的超市商品识别代码示例
以下是基于YOLOv8模型进行超市商品识别的一个完整代码示例。该示例涵盖了从加载预训练模型到执行推理的过程,并展示了如何处理图像输入并可视化检测结果。
#### 加载YOLOv8模型
首先,需要安装 `ultralytics` 库来支持 YOLOv8 的功能。可以通过以下命令完成库的安装:
```bash
pip install ultralytics
```
接着,在 Python 中导入必要的模块并加载预训练的 YOLOv8 模型:
```python
from ultralytics import YOLO
# 加载预训练的YOLOv8模型
model = YOLO('yolov8n.pt') # 可替换为'yolov8s.pt', 'yolov8m.pt'等其他版本[^1]
```
#### 执行商品识别
下面是一个简单的函数用于对单张图片中的商品进行识别和标注:
```python
import cv2
def detect_products(image_path, model):
"""
对指定路径下的图片进行商品识别。
参数:
image_path (str): 输入图片文件的路径。
model: 已加载的YOLOv8模型实例。
返回:
results: 推理后的结果对象。
"""
# 进行预测
results = model.predict(source=image_path, conf=0.5, save=True)[0] # 设置置信度阈值为0.5[^2]
return results
```
#### 结果可视化
为了更清晰地查看检测效果,可以利用 OpenCV 将检测框绘制在原图上:
```python
def visualize_results(results, image_path):
"""
可视化检测结果并将带有标记的结果保存至本地。
参数:
results: 推理返回的对象。
image_path (str): 图片文件路径。
"""
img = cv2.imread(image_path)
for box in results.boxes.data.tolist():
x1, y1, x2, y2, score, class_id = map(int, box[:6])
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绘制矩形框
cv2.putText(
img,
f"{results.names[class_id]} {score}",
(x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.9,
(0, 255, 0),
2
) # 添加类别名称和分数
output_image_path = "output_detected.jpg"
cv2.imwrite(output_image_path, img)
print(f"已将带检测框的图片保存至{output_image_path}。")
```
调用以上两个方法即可完成整个流程:
```python
if __name__ == "__main__":
input_image_path = "supermarket_product.jpg" # 替换为实际图片路径
detected_results = detect_products(input_image_path, model=model)
visualize_results(detected_results, input_image_path)
```
此代码实现了基本的商品识别逻辑,并提供了可视化的输出结果[^3]。
---
###
阅读全文
相关推荐

















