DigiHouse
繁體中文

TECH ARTICLE · NCU · 4 MIN READ

Blog / NCU

第 41 課|YOLOv8 影片目標檢測完整教學

YOLOv8 影片目標檢測完整教學。本文已重新整理為適合 DigiHouse 閱讀的課程文章,並保留原始 PIXNET 刊載網址。

YOLOv8 影片目標檢測完整教學

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

1. 工具與環境準備

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

• Python 環境: Python 版本需為 3.7 或以上。

• 安裝必要的套件:

text
pip install ultralytics opencv-python

• YOLO 模型: 使用 YOLOv8 Nano 模型(輕量、快速),自動從 Ultralytics 官方下載預訓練權重。

2. 下載範例影片

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

• 影片來源 1: GitHub YOLOv8 範例影片 - bikes.mp4

• 影片來源 2: GeeksforGeeks YOLOv8 文章

3. YOLOv8 影片目標檢測程式

以下是完整的影片檢測程式碼:

python
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. 教學結果示例

終端輸出:

text
影片資訊: 30 FPS, 寬度: 1280, 高度: 720, 幀數: 300
處理幀 300/300
處理完成!影片已保存到: output_video.avi

檢測結果影片:

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

劉老師的跨域創想工坊

本文亦刊載於 PIXNET

https://liusming.pixnet.net/blog/posts/14222899833

第 37 課|YOLOv8 影片目標檢測完整教學 | DigiHouse