# yolov8目标检测APP **Repository Path**: duan-qi-rui/yolov8-object-detection-app ## Basic Information - **Project Name**: yolov8目标检测APP - **Description**: 本项目是一个基于Tkinter和OpenCV的目标检测应用程序,实现了摄像头和视频文件的实时目标检测。通过YOLOv8模型进行目标检测,支持定位、分割和姿势三种模型类型,以及不同模型大小。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 171 - **Created**: 2025-12-10 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yolov8目标检测APP ## 项目描述 本项目是一个基于Tkinter和OpenCV的目标检测应用程序,实现了摄像头和视频文件的实时目标检测。通过YOLOv8模型进行目标检测,支持定位、分割和姿势三种模型类型,以及不同模型大小。 ## 项目实现步骤 ### 1. 环境配置 ```bash # 创建conda虚拟环境 conda create -n yolov8_app python=3.8 conda activate yolov8_app # 安装依赖包 pip install -r requirements.txt ``` ### 2. 下载预训练权重 从[Ultralytics官网](https://github.com/ultralytics/assets/releases)下载以下模型权重文件,放置在`weights/`目录下: - yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt (目标检测) - yolov8n-seg.pt, yolov8m-seg.pt (实例分割) - yolov8n-pose.pt, yolov8m-pose.pt, yolov8s-pose.pt (姿势估计) ### 3. 准备测试数据 解压`video_imgs.zip`文件到`assets/video_imgs/`目录 ### 4. 代码实现 #### 4.1 实现utils.py模块 - **init_model函数**: 实例化YOLO模型对象 ```python def init_model(model_path): model = YOLO(model_path) return model ``` - **process_frame函数**: 对视频帧进行目标检测处理 ```python def process_frame(model, frame, show_box, show_mask): results = model(frame, conf=0.25, iou=0.8) processed_frame = results[0].plot(boxes=show_box, masks=show_mask) return processed_frame ``` #### 4.2 实现obj_tkinterapp.py核心功能 - **change_model方法**: 根据用户选择构建模型名称和路径 - 定位模型: `yolov8{size}.pt` - 分割模型: `yolov8{size}-seg.pt` - 姿势模型: `yolov8{size}-pose.pt` - **display_frame方法**: 调用utils.process_frame处理视频帧 ```python if self.detecting: frame = utils.process_frame(self.model, frame, show_box=True, show_mask=True) ``` ### 5. 运行程序 ```bash python obj_tkinterapp.py ``` ### 6. 功能测试 - 点击"读取摄像头"按钮测试实时检测 - 点击"读取视频"按钮选择视频文件 - 切换不同模型类型和大小 - 使用"识别切换"按钮开启/关闭检测 ### 7. Jupyter Notebook演示 运行`yolov8_object_detection_demo.ipynb`查看详细的使用示例 ## 项目运行效果截图 ### 姿势估计效果 ![姿势估计效果图](1.png) ### 目标定位效果 ![目标定位效果图](2.png) ## 功能 - 支持摄像头和视频文件的实时目标检测 - 支持定位、分割和姿势三种模型类型 - 支持不同模型大小 - 支持在视频上显示边界框和遮罩 - 支持暂停、播放和重新播放视频文件 - 支持目标检测的开始/停止 ## 依赖 - Python 3 - OpenCV - Tkinter - ultralytics YOLO ## 使用 1. 克隆项目到本地 2. 创建conda虚拟环境 3. 安装依赖 4. 运行项目 `python obj_tkinterapp.py` ## 注意 - 要解压`video_imgs.zip` - 要自行下载`yolov8`的预训练权重文件 - 确保摄像头可用且没有被其他应用程序占用 - 确保视频文件格式正确且路径合法 - 在选择模型类型和大小时,确保模型文件存在于项目目录的“weights”文件夹下 - Jupyter Notebook文件:`yolov8_object_detection_demo.ipynb` ## 个人信息 - 学号: 202352320120 - 年级: 2023 - 专业: 智能科学与技术 - 班级: 1 班