close

YOLOv8 即時攝影機目標偵測教學

在本篇教學中,我們將介紹如何使用 YOLOv8 和 PC 上的攝影機來實現即時目標偵測。程式會即時捕獲攝影機畫面,並標註檢測到的物體類別和邊界框。

1. 工具與環境準備

在開始之前,請確保已完成以下準備:

  • Python 環境: 確保 Python 版本為 3.7 或以上。
  • 必要套件安裝: 使用以下命令安裝 YOLO 和 OpenCV 所需的套件:
pip install ultralytics opencv-python

2. 即時攝影機目標偵測完整程式碼

以下是完整的 Python 程式碼,適用於即時攝影機畫面目標偵測:

from ultralytics import YOLO
import cv2

# 加載 YOLO 模型
model = YOLO('yolov8n.pt')  # 使用 Nano 模型(輕量快速)

# 開啟攝影機(0 表示默認攝影機)
cap = cv2.VideoCapture(0)

# 檢查攝影機是否成功打開
if not cap.isOpened():
    print("無法啟動攝影機!")
    exit()

# 獲取攝影機畫面尺寸
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(f"攝影機畫面大小:{frame_width}x{frame_height}")

# 即時處理攝影機畫面
while True:
    ret, frame = cap.read()  # 從攝影機捕獲畫面
    if not ret:
        print("無法讀取攝影機畫面!")
        break

    # 使用 YOLO 模型進行推理
    results = model(frame)

    # 獲取帶檢測結果的畫面
    annotated_frame = results[0].plot()

    # 顯示畫面
    cv2.imshow("YOLOv8 Real-Time Detection", annotated_frame)

    # 按下 'q' 鍵退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 釋放攝影機和關閉視窗
cap.release()
cv2.destroyAllWindows()


3. 程式碼解析

  • 加載 YOLO 模型:
    model = YOLO('yolov8n.pt')
    使用 YOLOv8 Nano 模型進行目標偵測,Nano 模型輕量且適合即時運行。
  • 開啟攝影機:
    cap = cv2.VideoCapture(0)
    開啟默認攝影機(參數 0 表示第一個攝影機)。若有多個攝影機,可以將參數改為 1 或其他數字。
  • 即時處理畫面:
    ret, frame = cap.read()
    從攝影機逐幀捕獲畫面,並傳入 YOLO 模型進行目標偵測。
  • 顯示畫面:
    cv2.imshow("YOLOv8 Real-Time Detection", annotated_frame)
    使用 OpenCV 顯示帶檢測結果的畫面。
  • 退出條件:
    if cv2.waitKey(1) & 0xFF == ord('q'):
    按下鍵盤上的 'q' 鍵退出程式。
  • 釋放資源:
    cap.release()
    cv2.destroyAllWindows()
    停止攝影機捕獲並關閉所有視窗。

4. 教學結果示例

執行程式後,您將看到即時捕獲的攝影機畫面,並在畫面上標註檢測到的物體類別(如 "person"、"car")和邊界框。按下 'q' 鍵即可退出程式。

5. 注意事項

  • 若攝影機無法正常工作,請檢查設備是否正確連接,並嘗試更改 cv2.VideoCapture(0) 的參數。
  • 若電腦效能不足,可考慮降低攝影機解析度或使用更輕量級的模型(如 yolov8n.pt)。
  • 確保 Python 環境已正確安裝必要的套件,使用以下命令重新安裝:
pip install ultralytics opencv-python

6. 應用場景

本程式適用於以下場景:

  • 即時行人或物件檢測。
  • 多攝影機監控系統的開發。
  • 即時目標跟蹤或分析。

結語

通過本教學,您應該已經學會如何使用 YOLOv8 和攝影機進行即時目標偵測。如果有其他問題或需要進一步幫助,歡迎留言交流!

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

    劉老師的跨域創想工坊

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