close

YOLOv8 影片目標檢測完整教學

在本篇教學中,我們將演示如何使用 YOLOv8 進行影片目標檢測,並結合網路上的範例影片作為測試素材。教學包括程式碼的詳細說明,以及範例影片的下載和使用步驟。

1. 工具與環境準備

在開始之前,確保已經安裝必要的軟體和工具:

  1. Python 環境:
    • Python 版本需為 3.7 或以上。
    • 安裝必要的套件:
    pip install ultralytics opencv-python
  2. YOLO 模型: 使用 YOLOv8 Nano 模型(輕量、快速),自動從 Ultralytics 官方下載預訓練權重。

2. 下載範例影片

以下是可用於測試的現成範例影片來源:

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

檢測結果影片:

帶有檢測結果的邊界框和類別名稱,清晰標註影片中的物體(例如自行車、行人等)。

arrow
arrow
    創作者介紹
    創作者 liusming 的頭像
    liusming

    劉老師的跨域創想工坊

    liusming 發表在 痞客邦 留言(0) 人氣()