2012年6月23日 星期六

期末專案報告

這次專案作品-視訊版StepMania


把原本用手指觸動鍵盤的節奏遊戲

轉換成透過視訊來和身體作互動


程式部分


我分成三個部分做處理

第一部分

Auto:
先把整個視訊的設定都把他調整好

然後右上角有個 5

表示倒數5秒後開始取背景影像

而做到後面時 才發現需要利用到鏡射

上網搜尋了一下 都是OpenCV的資料

只好自己寫了 利用Swap把左右兩邊的像素作互換

結果是成功 只是影像邊緣會出現鋸齒狀 不過影響不大


第二部分

Load Image:
這部分就跟作業像框一樣

選好自己所做好的圖 載入圖片就行


第三部分

Start:
透過老師的 程式範例五 來把影像轉換成二元圖


Threshold預設為1600 結果不會太差


而重要部分是觸動虛擬按鍵的判斷


因為我六個按鍵 所以分成個六個區塊來處理


設了6個Count 來算出二元影像中 各區塊的白色pixel有多少個


當白色pixel數目達到某個數值後 便啟動按鍵 (數值預設為50 位於右下角)


利用keybd_event搭配鍵盤虛擬碼便能啟動某按鍵


例如: 左 keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);


把三個部分完成後


後面就是不斷地做測試


像是6個區塊有稍做調整


以及人需做在哪個位置會比較好




實際操作影片






心得:
這次的成品其實跟最初的構想不太一樣


像是原本的構想按鍵畫面和程式構想部分


由於在中間按鍵容易受到身體的干擾


原本有做套於手指 以利判斷的小道具
效果不大 所以最後不採用

而把按鍵都調到最上面

另外

原本程式是想利用膚色做判斷

後來發現膚色的判斷不夠精準 & 容易受干擾


而改成用二元圖判斷比較穩定

這程式應用到的一些功能 老師上課和範例程式都有講到

所以認真上課 跟 作業須花時間去做 還滿重要的

而pixel的處理方面要寫過影像處理的作業 會比較清楚

這課程學到許多跟視訊相關的應用

透過設計遊戲專案 也把學到的東西都應用上了

還滿有成就感的

雖然程式還是有小不穩定




                        

沒有留言: