close
YOLOv8 影片目標檢測完整教學
在本篇教學中,我們將演示如何使用 YOLOv8 進行影片目標檢測,並結合網路上的範例影片作為測試素材。教學包括程式碼的詳細說明,以及範例影片的下載和使用步驟。
1. 工具與環境準備
在開始之前,確保已經安裝必要的軟體和工具:
- Python 環境:
- Python 版本需為 3.7 或以上。
- 安裝必要的套件:
pip install ultralytics opencv-python
- YOLO 模型: 使用 YOLOv8 Nano 模型(輕量、快速),自動從 Ultralytics 官方下載預訓練權重。
2. 下載範例影片
以下是可用於測試的現成範例影片來源:
- 影片來源 1: GitHub YOLOv8 範例影片 - bikes.mp4
- 影片來源 2: GeeksforGeeks YOLOv8 文章
3. YOLOv8 影片目標檢測程式
以下是完整的影片檢測程式碼:
from ultralytics import YOLO import cv2 import os # 加載 YOLO 模型 model = YOLO('yolov8n.pt') # 使用 Nano 模型(輕量快速) # 輸入影片路徑 video_path = 'bikes.mp4' # 替換為您的影片路徑 output_path = 'output_video.avi' # 輸出的影片檔案路徑 # 開啟影片文件 cap = cv2.VideoCapture(video_path) # 確認影片是否成功打開 if not cap.isOpened(): print("無法打開影片文件!請檢查路徑。") exit() # 獲取影片資訊 fps = int(cap.get(cv2.CAP_PROP_FPS)) # 幀率 frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 寬度 frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 高度 frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 總幀數 print(f"影片資訊: {fps} FPS, 寬度: {frame_width}, 高度: {frame_height}, 幀數: {frame_count}") # 初始化影片寫入器 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 編碼格式 out = cv2.VideoWriter(output_path, fourcc, fps, (frame_width, frame_height)) # 逐幀處理 frame_index = 0 while cap.isOpened(): ret, frame = cap.read() if not ret: break # YOLO 推理 results = model(frame) # 獲取帶有檢測結果的圖片 annotated_frame = results[0].plot() # 寫入影片 out.write(annotated_frame) # 在終端打印處理進度 frame_index += 1 print(f"處理幀 {frame_index}/{frame_count}", end="\r") # 釋放資源 cap.release() out.release() cv2.destroyAllWindows() print(f"處理完成!影片已保存到: {output_path}")
4. 教學結果示例
終端輸出:
影片資訊: 30 FPS, 寬度: 1280, 高度: 720, 幀數: 300
處理幀 300/300
處理完成!影片已保存到: output_video.avi
檢測結果影片:
帶有檢測結果的邊界框和類別名稱,清晰標註影片中的物體(例如自行車、行人等)。
文章標籤
全站熱搜