Ubuntu使用opencv开启外接摄像头并加载yolov8模型进行实时识别
时间: 2024-10-07 19:06:50 浏览: 6
Ubuntu 上使用 OpenCV 开启外接摄像头并加载 YOLOv8 模型进行实时识别的步骤可以分为几个部分:
1. 安装依赖:首先需要安装 OpenCV 和相应的深度学习库,比如 Darknet(YOLOv8 的作者提供),以及 CUDA 和 cuDNN 如果你的显卡支持 GPU 加速。你可以通过以下命令安装基本的 OpenCV:
```
sudo apt-get update
sudo apt-get install libopencv-dev python3-opencv
pip install darknet
```
2. 下载预训练模型:访问 YOLOv8 的 GitHub 仓库下载预训练的权重文件(如 yolov8.weights)和配置文件(如 yolo-v3.cfg)。通常在 Darknet 的 GitHub 主页上能找到这些资源。
3. 准备数据和配置:YOLOv8 需要一个标签文件(如 classes.txt),其中包含你要识别的对象类别。你需要创建或准备这个文件。
4. 使用 Python 脚本:编写 Python 程序,利用 OpenCV 读取摄像头视频流,并使用 Darknet API 进行实时检测。以下是简单的示例代码:
```python
import cv2
import numpy as np
from darknet import Detector
# 初始化 Darknet 检测器
detector = Detector('yolo-v3.cfg', 'yolov8.weights', 0) # 第三个参数为是否启用GPU
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
_, frame = cap.read() # 读取一帧
img = cv2.resize(frame, (416, 416)) # 归一化到YOLOv8的输入尺寸
boxes, confs, class_ids = detector.detect(img, 0.5, 0.4) # 检测并返回边界框、置信度和类别
for box, conf, cls_id in zip(boxes, confs, class_ids):
x, y, w, h = box
label = detector.class_names[cls_id] # 获取类别名称
color = (0, 255, 0) if conf > 0.5 else (0, 0, 255)
cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
cv2.putText(frame, f'{label}: {conf:.2f}', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2)
cv2.imshow("Object Detection", frame) # 显示结果
key = cv2.waitKey(1) & 0xFF # 等待按键
if key == ord('q'): # 按 q 键退出循环
break
cap.release()
cv2.destroyAllWindows()
```