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 模型:
使用 YOLOv8 Nano 模型進行目標偵測,Nano 模型輕量且適合即時運行。model = YOLO('yolov8n.pt')
- 開啟攝影機:
開啟默認攝影機(參數 0 表示第一個攝影機)。若有多個攝影機,可以將參數改為 1 或其他數字。cap = cv2.VideoCapture(0)
- 即時處理畫面:
從攝影機逐幀捕獲畫面,並傳入 YOLO 模型進行目標偵測。ret, frame = cap.read()
- 顯示畫面:
使用 OpenCV 顯示帶檢測結果的畫面。cv2.imshow("YOLOv8 Real-Time Detection", annotated_frame)
- 退出條件:
按下鍵盤上的 'q' 鍵退出程式。if cv2.waitKey(1) & 0xFF == ord('q'):
- 釋放資源:
停止攝影機捕獲並關閉所有視窗。cap.release() cv2.destroyAllWindows()
4. 教學結果示例
執行程式後,您將看到即時捕獲的攝影機畫面,並在畫面上標註檢測到的物體類別(如 "person"、"car")和邊界框。按下 'q' 鍵即可退出程式。
5. 注意事項
- 若攝影機無法正常工作,請檢查設備是否正確連接,並嘗試更改
cv2.VideoCapture(0)
的參數。 - 若電腦效能不足,可考慮降低攝影機解析度或使用更輕量級的模型(如
yolov8n.pt
)。 - 確保 Python 環境已正確安裝必要的套件,使用以下命令重新安裝:
pip install ultralytics opencv-python
6. 應用場景
本程式適用於以下場景:
- 即時行人或物件檢測。
- 多攝影機監控系統的開發。
- 即時目標跟蹤或分析。
結語
通過本教學,您應該已經學會如何使用 YOLOv8 和攝影機進行即時目標偵測。如果有其他問題或需要進一步幫助,歡迎留言交流!
文章標籤
全站熱搜