eefocus_4062187 发表于 2025-9-21 21:45:33

【AIMB-2210研华AMD嵌入式主板】AI 视觉识别应用:物体识别

本帖最后由 eefocus_4062187 于 2025-9-25 14:47 编辑

# 【AIMB-2210研华AMD嵌入式主板】AI 视觉识别应用:物体识别

本文介绍了 AIMB-2210 研华 AMD 嵌入式主板实现 AI 视觉识别类相关应用:物体识别,包括模型训练、板端推理、摄像头实时检测和推理识别等。

## 项目介绍

基于 YOLO 模型实现常见的80种物体识别,包括

- 物体识别的板端推理:包括流程图、代码、效果演示;
- 物体识别的动态显示:包括流程图、代码、效果演示;

## 板端推理

实现本地物体图片的识别和推理,并弹窗显示识别结果。

### 流程图

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214232t3ae9fspaploesss.jpg)

### 代码

新建 `objective_recognition.py` 并添加如下代码

```python
import cv2
from ultralytics import YOLO
import os

def detect_objects_in_image(image_path, model_path="model/yolov8n.pt"):
    """
    对本地图片进行物体识别并显示结果
   
    Args:
      image_path (str): 图片文件路径
      model_path (str): YOLO模型路径,默认为yolov8n.pt
    """
    # 1. 检查图片文件是否存在
    if not os.path.exists(image_path):
      print(f"错误: 图片文件 '{image_path}' 不存在")
      return
   
    # 2. 加载模型(如果不存在则自动下载)
    try:
      model = YOLO(model_path)
    except Exception as e:
      print(f"加载模型时出错: {e}")
      return
   
    # 3. 读取图片
    image = cv2.imread(image_path)
    if image is None:
      print(f"错误: 无法读取图片 '{image_path}'")
      return
   
    # 4. 推理
    results = model(image)
   
    # 5. 绘制检测结果
    annotated_image = results.plot()# 绘制边界框和标签
   
    # 6. 显示结果
    window_name = f"YOLOv8 检测结果: {os.path.basename(image_path)}"
    cv2.imshow(window_name, annotated_image)
   
    # 调整窗口大小以适应屏幕(可选)
    height, width = annotated_image.shape[:2]
    max_height = 800# 最大窗口高度
    if height > max_height:
      scale = max_height / height
      new_width = int(width * scale)
      resized_image = cv2.resize(annotated_image, (new_width, max_height))
      cv2.imshow(window_name, resized_image)
   
    print("按任意键关闭窗口...")
    cv2.waitKey(0)# 等待按键
    cv2.destroyAllWindows()

if __name__ == "__main__":
    # 设置图片路径(修改为您的图片路径)
    image_path = "object_img/desktop.jpg"# 请替换为实际图片路径
   
    # 执行物体识别
    detect_objects_in_image(image_path)
```

- 右键该文件,选择使用 IDEL 编辑;
- 菜单栏选择 Run - Run Module 选项,运行程序;

> 或双击 `*.py` 文件运行。

### 效果

- 运行程序后弹出物体识别结果图片窗口;
- 标注物体识别选框、文字和置信度;
- 同时终端打印识别结果,包括物体类别、位置、置信度等信息;

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214317t5sqbc3gzg303s3e.jpg)

更多场景举例

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214329a5uctecbmccuthph.jpg)

马路

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214353rbnoe4obo4oowbo8.jpg)

室内

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214412ca0tjwccwazdcz0a.jpg)

水果

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214427c234269l9m36mza***)

## 动态检测

使用 USB 摄像头实现动态实时物体识别,并标注和打印识别结果。

### 流程图

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214452mn0tqqo0mqn0q0d0.jpg)

### 代码

新建 `objective_recognition_CamUSB.py` 并添加如下代码

```python
# cam_yolo.py
import cv2
from ultralytics import YOLO

# 1. 加载模型(6 MB,COCO 80 类)
model = YOLO("model/yolov8n.pt")          # 不存在则自动下载

# 2. 打开摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
    raise RuntimeError("打不开摄像头")

print("按 q 退出")
while True:
    ret, frame = cap.read()
    if not ret:
      break

    # 3. 推理
    results = model(frame, stream=True)# 返回生成器,逐帧推理

    # 4. 画框+置信度(Ultralytics 自带 API)
    annotated = results.__next__().plot()# BGR 数组

    # 5. 显示
    cv2.imshow("YOLOv8 USB Camera", annotated)
    if cv2.waitKey(1) & 0xFF == ord('q'):
      break

cap.release()
cv2.destroyAllWindows()
```

- 右键该文件,选择使用 IDEL 编辑;
- 菜单栏选择 Run - Run Module 选项,运行程序;

> 或双击 `*.py` 文件运行。

### 效果

运行程序后弹出摄像头实时采集画面,自动标注物体识别选框、文字和置信度

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/214523d9x899xrwr9kajwo.jpg)

## 总结

本文介绍了 AIMB-2210 研华 AMD 嵌入式主板实现 AI 视觉识别类相关应用:物体识别,包括模型训练、板端推理、摄像头实时检测和推理识别等,为该产品在 AI 视觉领域的快速开发和应用提供了参考。

<iframe src="//player.bilibili.com/player.html?isOutside=true&aid=115253820068935&bvid=BV16bJ1zfEqj&cid=32619760809&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>

页: [1]
查看完整版本: 【AIMB-2210研华AMD嵌入式主板】AI 视觉识别应用:物体识别