Python | OpenCV YOLOv8 介紹與環境安裝
📚 前言
在 從分類到偵測 — YOLOv8 系列介紹 中說明了分類與偵測任務的差異,以及這個子系列的學習路線。
如果你的目標是「在圖片中找出物件的位置」,也就是物件偵測任務,就需要不同的模型與訓練方式。
YOLOv8 是目前最主流的即時物件偵測框架,由 Ultralytics 開發與維護。
這個系列文章將帶你從環境安裝開始,一路到用自己的資料集訓練出專屬的偵測模型。
🔎 什麼是 YOLO?
YOLO(You Only Look Once)是一系列即時物件偵測模型的統稱。
與傳統的兩階段偵測器(如 Faster R-CNN)不同,YOLO 只需一次前向傳播就能同時預測所有物件的位置與類別,速度極快。
YOLOv8 是第八代,由 Ultralytics 在 2023 年發布,相較前代有以下特點:
- 更高的偵測準確度(mAP)
- 更快的推論速度
- 統一的 Python API,支援偵測、分割、分類、姿態估計等多種任務
- 內建訓練、驗證、推論、匯出等完整工具鏈
🧠 模型規格與選擇
圖:YOLOv8 五種模型規格比較 ─ 從 nano 到 extra 的參數量、準確度、速度與推薦情境
💡 建議先用
yolov8n或yolov8s跑通訓練流程,確認資料沒問題後,再換較大的模型提升準確度。
🛠️ 環境安裝
本系列後續所有範例皆以 GPU 執行為主。
相關環境安裝文章:
1 | # 安裝 ultralytics |
💻 驗證安裝
1 | # verify_install.py |
正常輸出範例(GPU):
1 | True |
💡 若
torch.cuda.is_available()回傳False,代表 PyTorch 的 GPU 版本未正確安裝,請重新確認 CUDA 版本並參照 pytorch.org 安裝對應版本。
💻 使用預訓練模型快速測試
安裝完成後,我們可以用 Ultralytics 提供的 CLI(指令列)方式快速測試 YOLOv8 是否正常運作。
YOLOv8 的 CLI 非常方便,適合快速驗證環境與模型效果。
💡 以下範例使用的
yolov8n.pt是以 COCO 資料集預訓練的權重,能偵測 80 種常見物件(人、車、動物、家電、食物、家具等)。若目標物件不在這 80 類內,則需要自行蒐集資料訓練自訂模型,這正是後續幾篇要介紹的重點。
🔹 使用指令列(CLI)快速測試
🔸 偵測單張圖片

- ⌨ 指令:
1
2# 偵測圖片(使用 Ultralytics 官方測試圖片,第一次執行會自動下載模型權重)
yolo detect predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg" - 🖥️ 輸出:
1
2
3
4
5
6
7
8Ultralytics 8.4.26 Python-3.10.11 torch-2.11.0+cu130 CUDA:0 (NVIDIA GeForce RTX 2060 SUPER, 8192MiB)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
Found https://ultralytics.com/images/bus.jpg locally at bus.jpg
image 1/1 D:\PythonWorkspace\opencv-tutorial\bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 27.1ms
Speed: 1.9ms preprocess, 27.1ms inference, 12.6ms postprocess per image at shape (1, 3, 640, 480)
Results saved to D:\PythonWorkspace\opencv-tutorial\runs\detect\predict
Learn more at https://docs.ultralytics.com/modes/predict📝 說明:這是測試環境是否正常的最簡單方式。模型會自動偵測圖片中的物件,並在終端機顯示偵測到的類別與信心度,同時會把結果圖片儲存到 runs/detect/predict 資料夾。
🔸 偵測本地圖片

- ⌨ 指令:
1
2# 偵測本地圖片(street.jpg 為「OpenCV 與深度學習框架整合」篇使用的 Pexels 街景素材)
yolo detect predict model=yolov8n.pt source=assets/street.jpg - 🖥️ 輸出:
1
2
3
4
5
6
7Ultralytics 8.4.26 Python-3.10.11 torch-2.11.0+cu130 CUDA:0 (NVIDIA GeForce RTX 2060 SUPER, 8192MiB)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
image 1/1 D:\PythonWorkspace\opencv-tutorial\assets\street.jpg: 448x640 1 person, 7 cars, 2 buss, 28.7ms
Speed: 2.2ms preprocess, 28.7ms inference, 12.0ms postprocess per image at shape (1, 3, 448, 640)
Results saved to D:\PythonWorkspace\opencv-tutorial\runs\detect\predict
Learn more at https://docs.ultralytics.com/modes/predict📝 說明:把
source改成你本機的圖片路徑即可。結果圖片會自動儲存,並在終端機顯示偵測到的物件數量與類別。
🔸 偵測影片

- ⌨ 指令:
1
2# 偵測影片(street.mp4 同上)
yolo detect predict model=yolov8n.pt source=assets/street.mp4 - 🖥️ 輸出:
1
2
3
4
5
6
7
8
9
10
11
12Ultralytics 8.4.26 Python-3.10.11 torch-2.11.0+cu130 CUDA:0 (NVIDIA GeForce RTX 2060 SUPER, 8192MiB)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
video 1/1 (frame 1/93) D:\PythonWorkspace\opencv-tutorial\assets\street.mp4: 384x640 8 persons, 2 cars, 3 traffic lights, 1 handbag, 20.4ms
video 1/1 (frame 2/93) D:\PythonWorkspace\opencv-tutorial\assets\street.mp4: 384x640 8 persons, 2 cars, 3 traffic lights, 1 handbag, 7.6ms
... 省略 ...
video 1/1 (frame 91/93) D:\PythonWorkspace\opencv-tutorial\assets\street.mp4: 384x640 15 persons, 1 car, 3 traffic lights, 7.6ms
video 1/1 (frame 92/93) D:\PythonWorkspace\opencv-tutorial\assets\street.mp4: 384x640 12 persons, 1 car, 2 traffic lights, 7.4ms
video 1/1 (frame 93/93) D:\PythonWorkspace\opencv-tutorial\assets\street.mp4: 384x640 12 persons, 1 car, 2 traffic lights, 7.4ms
Speed: 1.3ms preprocess, 7.8ms inference, 1.6ms postprocess per image at shape (1, 3, 384, 640)
Results saved to D:\PythonWorkspace\opencv-tutorial\runs\detect\predict
Learn more at https://docs.ultralytics.com/modes/predict📝 說明:YOLOv8 會逐幀處理影片,並在終端機顯示每幀的偵測結果。處理完後會自動把帶有偵測框的影片儲存起來。
🔸 即時攝影機偵測
- ⌨ 指令:
1
2# 即時攝影機偵測(需有攝影機,0 代表預設裝置)
yolo detect predict model=yolov8n.pt source=0 - 🖥️ 輸出:
1
2
3
4
5
6
7Ultralytics 8.4.26 Python-3.10.11 torch-2.11.0+cu130 CUDA:0 (NVIDIA GeForce RTX 2060 SUPER, 8192MiB)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
[ WARN:0@0.001] global cap_ffmpeg_impl.hpp:1217 open VIDEOIO/FFMPEG: Failed list devices for backend dshow
[ERROR:0@2.857] global obsensor_uvc_stream_channel.cpp:163 cv::obsensor::getStreamChannelGroup Camera index out of range
... 省略 ...
ConnectionError: 1/1: 0... Failed to open 0📝 說明:如果出現類似錯誤,通常是因為沒有連接攝影機,或攝影機被其他程式占用。解決方式:確認攝影機已連接,並關閉其他可能使用攝影機的程式(例如 Zoom、Teams、Camera App)。成功時會開啟一個視窗,即時顯示偵測結果。
🔹 Python API 方式
1 | # inference.py |

圖:使用 YOLOv8 Python API 載入預訓練模型對圖片推論並輸出偵測到的物件類別與信心度
⚠️ 注意事項
- 第一次執行會自動下載模型權重:
yolov8n.pt約 6MB,yolov8x.pt約 130MB,需要網路連線。 - ultralytics 會將下載的模型快取在
~/.cache/ultralytics/(或 Windows 的%USERPROFILE%\.cache\ultralytics\)。 - PyTorch 版本需與 CUDA 版本對應:安裝時請至 pytorch.org 確認當前 CUDA 版本對應的
--index-url,版本不符會導致安裝到 CPU 版本。
📊 應用場景
- 快速驗證可行性:用預訓練模型先測試偵測效果,確認方向後再進入自訓練流程。
- 直接部署通用偵測:若目標物件恰好在 COCO 80 類別內,可直接使用預訓練模型而無需訓練。
🎯 結語
YOLOv8 的環境設定相當簡單,pip install ultralytics 就能擁有完整的工具鏈。
下一步是 YOLOv8 資料集準備,學習如何組織自己的資料,讓 YOLOv8 能夠讀取並訓練。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
