顯示具有 98360331 莊志哲 標籤的文章。 顯示所有文章
顯示具有 98360331 莊志哲 標籤的文章。 顯示所有文章

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的處理方面要寫過影像處理的作業 會比較清楚

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

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

還滿有成就感的

雖然程式還是有小不穩定




                        

2012年6月3日 星期日

期末專案構想

遊戲名稱:  視訊版StepMania
遊戲介紹:
StepMania 是一個開放原始碼、跨平台的音樂遊戲及引擎。
遊戲玩法:
螢幕上的箭頭向上方移動,最後會遇到一列一般靜止的目標箭頭。當它們對齊目標時,玩家要在鍵盤或跳舞毯上按下相應按鍵。箭頭遇到目標的時刻取決於音樂的節拍。Stepmania 遊戲過程強烈依賴玩家的節奏感。遊戲的積分取決於玩家是否能精確地隨著節拍觸發箭頭。

專題想法:
原本是利用設定設定鍵盤上按鍵來按下相應之← ↓ ↑ → ,轉換成利用視訊來偵測是否按下按鍵。以下為構想畫面。

程式部分:
想利用膚色偵測來判斷手是否點選到各部分按鍵功能。

2012年5月27日 星期日

Hw03


這次的相框程式
大致是照著載入龍珠程式去改寫
先去網路找了一張相框圖
利用Photoshop 把中間的白色部分改成黑色
程式部分
則是宣告了新陣列來儲存圖片資料
並判斷是否為黑色 來決定顯示或不顯示
執行後  載入圖片時 發生了Stream read error
直接找Google大神搜尋
第一個資料 就是老師之前的文章 http://leebcb.blogspot.com/2009/12/stream-read-error.html
照著文章內 用PSPad修改圖片後 就能成功載入
程式也成功執行


2012年5月1日 星期二

Hw02


心得:
這次程式的錄影
在課堂上 把之前的截取圖片的capGrabFrame程式碼部分
改成了capCaptureSequence 其實就能夠錄影存檔
在沒設定參數之下 參數都是預設
點擊滑鼠左右鍵和按下Esc錄影都會停止
看過老師新出來得程式界面 有許多函數可設定
先看了一下老師BCB Programming Notes 裡的取得與設定錄影參數
把介面先拉好了 只差理解各參數意思 跟寫入程式碼



2012年3月20日 星期二

HW01

在之前的影像處理中
練習了些利用BCB做影響處理的程式
所以 對於一些基本語法不會太陌生

第一次的作業是先把視訊的影像讀出來
在學校是先用新版的BCB先做
雖然是32-bit 卻須改成64-bit的宣告
// wchar_t szDeviceName[80];
// wchar_t szDeviceVersion[80];
建立視窗的 (LPSTR) 須改成(LPWSTR)
不然都出現型別轉換的錯誤

可是回到宿舍的電腦BCB6 元件要重拉
所以又重做了一次
BCB6程式碼只須照老師的範例貼上去就能執行 無須多做修改
筆電原本就有內建視訊 就沒另外接視訊 直接做測試

顯示資訊
進行連接
設定Preview+Rate 33.3 miliseconds

心得:之前互動電子課程中是利用DevC++結合OpenCV來做視訊相關的作業,跟BCB差別在沒有使用者介面,須修改速率或一些數值,都只能從程式碼裡改,比較不方便。期待接下來的界面能再增加許多功能,學習視訊方面的應用。