複製專題
初次設定請參考前置作業
專案說明
本應用程式建立了一個互動式物件辨識遊戲,能夠辨識現實世界中的物體。它使用 video_objectdetection Brick,透過 USB 網路攝影機(Webcam)即時擷取影像,並利用 YOLOX Nano 人工智慧模型持續進行物件辨識。
使用者需依照網頁上的提示,尋找並讓鏡頭辨識以下五種物品:
📖 書本(Book)
🍼 瓶子(Bottle)
🪑 椅子(Chair)
☕ 杯子(Cup)
📱 手機(Cell Phone)
當五項物品皆成功辨識後,即完成挑戰並進入過關(Win)狀態。
🎥 即時影像串流與物件辨識
使用 USB 攝影機即時擷取畫面,並持續辨識畫面中的物件。
✅ 互動式任務清單
當系統成功辨識指定物品後,清單會自動更新,顯示已完成的項目。
🎯 信心值(Confidence Threshold)調整
可調整辨識信心值門檻,以控制辨識的靈敏度與準確度。
🏆 完成挑戰機制
當五項指定物品全部找到後,系統會自動顯示過關畫面或成功訊息,讓遊戲更具互動性與趣味性。
🎥 1. 即時影像串流(Video Streaming)
video_objectdetection Brick 會從 USB 網路攝影機(Webcam)擷取即時影像,並在 4912 埠(Port 4912)提供低延遲(Low Latency)的影像串流服務。前端網頁透過 <iframe> 嵌入此串流畫面,讓使用者能即時觀看攝影機影像。
🤖 2. AI 物件辨識(Inference)
後端系統會持續將攝影機取得的每一張影像畫面送入 YOLOX Nano 物件辨識模型進行推論(Inference),即時辨識畫面中出現的各種物件。
🔄 3. 偵測結果傳送(Event Handling)
當 AI 成功辨識到物件後,後端會透過 WebSocket 將辨識結果(例如:Book、Bottle、Chair 等物件標籤)即時傳送至前端網頁。
🎮 4. 遊戲邏輯(Game Logic)
前端 JavaScript 會接收 WebSocket 傳來的辨識結果,並與預先設定的目標清單進行比對。若辨識到指定物品,系統便會自動更新任務清單,當所有目標物件皆完成辨識後,即判定挑戰成功並顯示過關畫面。
硬體安裝:Type C hub + webcam + PD Power
工作流程
連線控制:
先記錄UNO Q當時的連線IP,方便之後做連結。
如果是相同交換器/IP分享器底下,則可以將筆電與UNO Q連線到同一台底下,再開啟ArduinoAppLab程式
最一開始安裝設定時所設定的密碼
書
瓶子
椅子
杯子
手機
變更物件:
變更assets/app.js 中targetObjects 陣列中的物件。
變更網頁縮圖:
變更assets/index.html中的小圖示與文字。
專案架構:
HTML:網頁以iframe的方式顯示影音串流
Javascript中設定找尋目標,並在偵測到時傳送message。
Python:將 AI 物件辨識結果即時傳送到網頁介面,讓前端可以根據辨識結果更新遊戲畫面。
App:負責啟動整個 Arduino App。
WebUI:建立與網頁前端的通訊。
VideoObjectDetection:負責攝影機畫面與 AI 物件辨識。
datetime:取得目前時間,作為事件時間戳記(Timestamp)。