2025最新Python机器视觉实战:基于OpenCV与YOLOv8的多功能实时视觉系统(附完整代码)二

时间:2025-02-24 07:43:47

2025最新Python机器视觉实战:基于OpenCV与YOLOv8的多功能实时视觉系统(附完整代码)

摘要:本文基于OpenCV与YOLOv8模型,实现一个多功能实时视觉系统,包含目标检测、目标跟踪、运动轨迹绘制、目标计数、区域入侵检测、图像分割与保存检测结果等功能。代码兼容Python 3.7+,功能丰富且经过稳定性测试,适合中高级开发者参考。所有依赖库均为最新版本,确保运行流畅。


一、环境准备

  1. 安装依赖库

    pip install opencv-python==4.9.0  # OpenCV库
    pip install ultralytics==8.0.0    # YOLOv8模型库
    pip install numpy==1.23.5         # 数值计算库
    pip install pandas==2.0.0         # 数据存储库
    pip install matplotlib==3.7.0     # 可视化库
    
  2. 下载YOLOv8预训练模型

    • 模型文件:yolov8n.pt
    • 下载地址:Ultralytics官方GitHub

二、代码实现与步骤解析

步骤1:加载YOLOv8模型与初始化参数

import cv2
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from ultralytics import YOLO
from collections import defaultdict

# 加载YOLOv8预训练模型
model = YOLO("yolov8n.pt")

# 设置检测类别(可选)
classes_to_detect = ["person", "car", "dog"]  # 仅检测人、车、狗

# 初始化全局变量
trackers = defaultdict(list)  # 目标跟踪器
object_count = defaultdict(int)  # 目标计数
frame_count = 0  # 帧计数器
detection_results = []  # 检测结果存储

步骤2:定义辅助函数

def draw_trajectory(frame, trackers):
    """绘制目标运动轨迹"""
    for label, points in trackers.items():
        if len(points) > 1:
            for i in range(1, len(points)):
                cv2.line(frame, points