Python | OpenCV 專案:天堂私服 YOLOv8 物件偵測實戰
📑 目錄
⚠️ 免責聲明
本文章內容僅供學術研究與電腦視覺技術學習之用途,所有程式碼與技術說明均以教育目的為出發點,用於探討資料蒐集、影像標記、YOLOv8 模型訓練與即時物件偵測等技術在實際場景中的應用方式。
- 本文作者不提供任何形式的輔助程式販售、散佈或商業服務。
- 本文所有範例程式僅限在自行架設的私有伺服器環境中測試,不得用於任何正式營運的線上遊戲伺服器。
- 使用遊戲輔助程式可能違反個別遊戲的使用者條款,並導致帳號封鎖、法律責任等後果,讀者須自行承擔一切相關風險與責任。
- 本文技術內容若被用於任何違法或損害他人利益之行為,作者概不負責。
- 私有伺服器的架設與使用涉及遊戲著作權相關法律問題,讀者應自行評估所在地區的法規,並確認於合法範圍內使用。
本文的核心目的是展示 資料蒐集 → 標記 → YOLOv8 訓練 → 即時偵測 這套完整流程,私服環境僅作為一個可控、高效的資料來源範例。相同的流程同樣適用於工廠瑕疵偵測、倉儲物件辨識、醫療影像分析等正當場景。
📚 前言
在上一篇 MediaPipe 手勢控制應用 中,我們完成了手勢辨識的互動應用。
這一篇是一個真實的遊戲輔助開發實戰:天堂私服 YOLOv8 物件偵測。
天堂私服的最大優勢是你能完全掌控遊戲環境:可以任意召喚怪物、調整地圖、控制光線與場景,讓資料蒐集變得極為高效。這個流程可以套用到任何你想偵測的遊戲物件。
🎯 專案目標
- 用私服環境快速蒐集遊戲截圖資料集
- 使用 LabelImg 標記怪物、NPC、道具等物件
- 以 YOLOv8 訓練自訂偵測模型
- 即時擷取遊戲畫面並進行物件偵測
🛠️ 套件安裝
1 | pip install ultralytics pygetwindow pywin32 |
💡
pywin32提供win32gui、win32ui,用來呼叫 WindowsPrintWindowAPI 擷取被遮擋的遊戲畫面。若import win32gui報錯,補跑一次 post-install:
1 python -m pywin32_postinstall -install最小化時 Windows 不會 render 畫面,仍無法擷取。
🧰 共用工具:視窗擷取模組
擷取視窗畫面的邏輯,蒐集與偵測兩個步驟都會用到,抽出來共用。
1 | # window_capture.py |
💻 步驟一:自動蒐集遊戲截圖
在私服中固定地點、怪物附近定時截圖,快速建立訓練資料集。
1 | # collect_screenshots.py |
💡 私服蒐集技巧:
- 在同一張地圖、同一區域定點蒐集,減少背景多樣性帶來的干擾
- 不同時間段(白天/夜間)各蒐集一批,讓模型適應光線變化
- 如果要偵測多種怪物,分別在各怪物出沒的地圖蒐集
💻 步驟二:LabelImg 標記
1 | # 安裝後直接執行 |
標記流程:
- Open Dir → 選擇
dataset/raw_images/ - Change Save Dir → 選擇
dataset/raw_labels/ - 左側切換格式為 YOLO
- 按
W畫框 → 輸入類別名稱(如orc、troll、item) - 按
Ctrl+S儲存,D切換下一張 - 開啟 Auto Save 可省略手動存檔
建議標記的類別(依需求調整):
1 | 怪物類:orc, troll, dark_elf, zombie, ... |
💡 先只標記 1~2 個最重要的類別,訓練成功後再擴充。類別越少,模型越好訓練。
💻 步驟三:分割資料集
將原始截圖與標籤按 8:2 比例隨機分割為訓練集與驗證集,建立對應目錄結構。
1 | # split_dataset.py |
💻 步驟四:建立 data.yaml
從 LabelImg 產生的 classes.txt 自動讀取類別,生成 YOLOv8 訓練所需的 data.yaml 設定檔。
1 | # create_yaml.py |
💻 步驟五:訓練 YOLOv8
以 YOLOv8s 預訓練模型為基礎,對遊戲截圖資料集進行訓練並輸出最佳偵測模型。
1 | # train.py |
💻 步驟六:即時遊戲畫面偵測



圖:開啟遊戲視窗截圖並以 YOLOv8 即時推論,在單一顯示視窗內用綠色框線標注所有偵測到的物件與信心度
⚠️ 注意事項
- 私服的優勢:可用 GM 指令隨時生怪、清場、調時間,蒐集成本極低。
- 解析度要一致:訓練與推論的視窗尺寸盡量固定,否則讓
imgsz涵蓋所有情境。 - 標記品質 > 數量:500 張精標遠勝 2000 張草率標。
- 視窗不能最小化:改用
PrintWindow後被其他視窗「遮擋」也能擷取,但最小化時 Windows 根本不 render 畫面,仍會拿到黑畫面;程式偵測到最小化會自動結束。 - 訓練路徑自動找:不同 Ultralytics 版本的
best.pt位置會跑掉,程式已用rglob抓最新。 - 顯示用手動 cv2,不要
results[0].plot():部分版本的plot()會另開視窗,畫在原 frame 上最可控。
📊 進階應用方向
- 自動攻擊:偵測到怪物後,取邊界框中心座標,用 pyautogui 點擊
- 自動撿取道具:偵測
item類別,自動移動到物品位置按撿取 - 血量監控:偵測 HP 條區域,用 OCR 或色彩分析判斷血量百分比
🎯 結語
從私服蒐集資料、LabelImg 標記、YOLOv8 訓練到即時偵測,整套流程一天內就能跑完;換成其他遊戲或模擬器,步驟完全一樣。
下一篇進入 天堂私服遊戲輔助(一)主程式 GUI 框架與 HP/MP 血量監控,把訓練好的模型整合進一套有 GUI 的完整輔助程式。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
Ultralytics YOLOv8 官方文件
LabelImg GitHub
pygetwindow GitHub
pywin32 GitHub