2025最新Python机器视觉实战:基于OpenCV与YOLOv8的多功能实时视觉系统(附完整代码)二
2025最新Python机器视觉实战:基于OpenCV与YOLOv8的多功能实时视觉系统(附完整代码)
摘要:本文基于OpenCV与YOLOv8模型,实现一个多功能实时视觉系统,包含目标检测、目标跟踪、运动轨迹绘制、目标计数、区域入侵检测、图像分割与保存检测结果等功能。代码兼容Python 3.7+,功能丰富且经过稳定性测试,适合中高级开发者参考。所有依赖库均为最新版本,确保运行流畅。
一、环境准备
-
安装依赖库
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 # 可视化库
-
下载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