2012年5月29日 星期二

HW02

這次的作業是要我們自行撰寫錄影功能



開啟視訊後,先讓使用者選擇錄影的時間長度

設定完成後,點擊開始、視訊即開始執行錄影功能

點我新增視窗至youtube觀看錄影結果




心得:

這次的作業在程式撰寫方面不難,

不過老師在讓我們了解其視訊節取影像的原理方面

下了不少工夫,

看似簡單的功能,所蘊藏的學問可是不容小覷的,

然而我也思考過視訊錄影的功能可以發揮在什麼樣的地方,

或許可以放在我的期末專案中,

使其擔任記錄畫面並且回饋的角色,

例如在進行遊戲的過程中,

錄下玩家的畫面,在結束之後Replay給玩家看,

也算是回饋畫面的一種,我想應該是相當有趣。

HW03

第三次的作業  第一個是放入一個相框


首先,先在網路上搜尋"適用"的相框圖片

所謂的是適應指的是大小480*640,且相框中間空顏色與其他背影顏色相同


而我選定的這個相框,中間是白色,且外圍都沒有類似白色的圖,就OK啦

使用的方式和老師上課教放入龍珠的方式雷同,載入圖片,掃描圖片,放入視窗












只是要記得圖片矩陣的大小,還有你所要判斷的顏色是什麼顏色

不然就會發生下列這種情況...


只要把矩陣大小修改正確就可以了。


第二個作業是要修改視窗背景的顏色,

我是用ColorDialog的方式,就可以讓使用者自由選擇所想要的背景顏色。





Hw03

相框
這是相框的初始狀態
將中間圖藍是因為要讓程式方便判斷
哪個區塊是要變成透明
好讓視訊顯示出來


相框和龍珠很雷同
都是插入圖片的一種
所以只要將插入龍珠的程式做些許的改變
就可以有方向的去完成作業
但是相框和龍珠不一樣的地方是
因為相框是整個畫面
所以不用扣掉50的大小
[i]、[j]都不用減掉50
但是有遇到的一個麻煩
因為龍珠的大小可以剛好放在page的旁邊
按Image按鈕就可以直接顯示
和一旁的龍珠一樣大小的圖案在視訊上
但是相框是640*480沒有辦法放在同一個介面
我也不會將點選的圖像縮小
所以只好再開一個page
將相框放在另外一個page
就是圖上最右邊的那個page
好方便以後有多個相框的時候做選擇


特效效果

將灰階改成藍色特效
因為之前都沒有很認真
所以剛開始覺得很困難
後來楊宗翰教我
將要的callback function
還有其他的參數改掉
就可以改寫灰階的程式
還可以隨意想變甚麼特效都可以了
雖然視訊裝置是接收iY、iU、iV
但是只要改變iR、iG、iB的值就可以變藍色的
我將數值改成iR = 0、iG = 125、iB = 255
就是這樣的效果了
不過有個細節沒有注意到
因為灰階有固定值
剛開始的時候忘記將固定值改成iU、iV

HW03

相框影像

首先選擇相框圖片
將要顯示影像的地方改為相框圖片沒有的色彩
方便程式判斷
在此改為紅色
















將紅色部份去掉後顯示在原本影像上


















相框程式問題
Q1:有同學修改範例程式時,沒有注意圖片大小而給了錯誤的長寬比,造成相框重覆出現
A1:老師所給的範例程式為先寬後長而不是一般的先長後寬,修改後可以正常顯示
Q2:若是讀取的影像還沒LOAD時會出現超出偵測範圍的錯誤
A2:圖片要是先LOAD好

由灰階程式更改成可根據自己喜好改變色偏



















修改灰階程式只要改UV值就能改變色偏了

使用TrackBar改變膚色判斷範圍





















利用TrackBar可以限制更改範圍,讓使用者方便調整,也沒有超出範圍的問題
根據環境改變和光影變化
UV值的大小也會跟著改變
所以設成四個TrackBar
分別為
U值的中間值
U值的範圍

V值的中間值
V值的範圍



將膚色以外的影像變成黑色



2012年5月28日 星期一

HW03

這是我在Google上找到的相框,我是用photoshop把中間去背的
然程式碼就跟放龍珠一樣只是把放的位置改變然後去背的顏色變成藍色這樣
 一開始要讀出相框的RGB值然後存起來,再將RGB轉成YUV,就可以將值
放到callbackfunction,程式碼再這樣寫(ucPhotoFrameRGB[0][i-0][j-0][0]!=255) || (ucPhotoFrameRGB[0][i-0][j-0][1]!=0) || (ucPhotoFrameRGB[0][i-0][j-0][2]!=0) 這就是要把藍色的部份去掉,再來就是把每個點換成相框的顏色,要去背的地方就是保持不變

這是程式執行完成之後


復古模式



模特兒:蔡宗桂
我測試過後的RGB值
R=128
G=64
B=0
程式碼就是把轉灰階的ptrCapture[k+1]跟ptrCapture[k+1]改成ptrCapture[k+1]=iU和ptrCapture[k+1]=iV再搭配RGB轉換成YUV就可以做出來了


其實這次的作業還蠻簡單的,只要龍珠的概念有懂,相框應該就不難了
復古模式也是一樣,就跟轉灰階差不多。


期末專案構想

主題:拳擊
遊戲內容:
與NPC進行面對面的戰鬥(PvP就饒了我吧...),
以打擊下巴、左右臉、正面為攻擊,
將對手或我方自身體力消耗至零即為勝負判定
遊戲方式:
使用紅色手套(或其他有色大型物體)進行登入,
接著在傷害區進行接觸打擊,
將雙手放置最底下即可防禦,
直到最後時間到或某一方生命值為零以下就算遊戲結束
遊戲大略畫面構想:
(僅供參考,畫工就別講究了)


(↑紅色橢圓為我方的手,綠色橢圓為對方的手)


(←感應受傷部位已經用顏色區別了)













(←我方就以碰到臉部為基準)

HW03

第三個作業有點像是在放相框,
我這次的「相框」圖片是用PhotoShop非常快速製作了一個相框,
(只花不到 5分鐘)
↓圖片如下↓
如果副檔名是Gif的話,
程式會讀不倒,
很奇怪的是Jpg的檔案讀起來卻是一個好像被刮花了的光碟片一樣的圖案,
後來是用小畫家重新儲存一次同一張圖就恢復正常,
再引入圖片的過程是一直發生「Range」超出的問題,
現在還在做比較正確的範圍選取中...


後期修正:
一開始是用再增加兩個For迴圈,
結果一執行馬上就當掉無回應,
所以只好放棄For迴圈指令,
不管我怎麼修改If內的邏輯指令,
也無法做到「中空」的結果,
頂多做到顏色至於中央的畫面,
後來不知哪來的靈感,
想說用用看Else的指令,
還好一試就成功。


HW2

(剛剛才注意到...第二個作業我已經完成很久了,但我一直沒放上來)
第二個作業是利用自己的攝影機拍攝一個15秒的短片,
每次要抓15秒左右都抓不太準,
所以乾脆用二十秒,
多不退不少不用補...
只是每次在進行錄影的時候滑鼠的游標都會變成執行中的樣子,
而且程式的擷取畫面會有雜訊出現,
可是最後錄完的影像卻非常清晰...

2012年5月27日 星期日

Hw03


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


2012年5月22日 星期二

期末專案構想

VGC專案構想


視訊操作版A.V.A戰地之王

遊戲介紹:

「A.V.A戰地之王」為次世代線上FPS大作,採取Unreal 3遊戲引擎製作,在台灣目前為「戲谷」旗下子公司「戰谷」代理,憑藉保證打擊外掛,且確實在遊戲內外掛幾乎沒有出現過幾次,所以頗受玩家好評,在「2011巴哈姆特遊戲大賞」的「人氣線上遊戲(其他)」榮獲銅賞。

專題介紹:

以互動視訊結合線上FPS,利用WebCam和自製的道具搭配撰寫好的程式,取代遊戲中的滑鼠和鍵盤指令,改變一般玩家所認知線上遊戲的玩法。

專題構想:

操作道具設計:

以A.V.A的槍枝XM8為外觀基礎,整體上使用厚紙板製作,槍身全部塗黑。
槍口裝有紅燈,只要一直按住對應的按鈕就會持續亮燈,藉由視訊的紅色偵測對電腦下達持續按住滑鼠左鍵,達到持續開火的目的。
瞄準鏡裝有綠燈,按一下相對應的按鈕可以瞬間亮一次燈,藉由視訊的綠色偵測對電腦下達亮一次為按一次右鍵,再亮一次就再按一次右鍵,達到開啟和關閉瞄準鏡的效果。
裝在彈匣的黃燈必須持續發光以控制滑鼠的移動。

鍵盤操作設計:

基本上不好使用形狀判定來判斷前後移動,所以使用皮膚判定,把自己的手移動到畫面對應的位子,藉此操作WASD的移動方式,甚至可以做到G鍵撿取武器、R鍵跟換彈匣。

程式技術:

顏色判定:

需要判定一定範圍值內的紅、綠、黃亮光,並且需要判定皮膚的顏色,在哪一去塊偵測到皮膚才有效果。

視訊操作鍵盤與滑鼠:

藉由偵測到的事件發生,處理相對應的按鍵指令,達到視訊遊玩目的。

障礙:

顏色判定失誤:

因為使用單純的顏色燈光判定,有極大的可能性造成電腦誤判位置。

防止外掛技術:

由於戰谷這家公司打著反外掛的招牌,所以此視訊程式有極大的可能性被判定為外掛。

設備能力不足:

「A.V.A戰地之王」是線上FPS遊戲,而且畫面寫實度大,所以非常吃CPU資源、顯卡效能、網路能力。

2012年5月8日 星期二

HW02 錄影

網址連結:http://www.youtube.com/watch?v=b0NMRehWRBk&feature=youtu.be

這次要自己想辦法設錄影參數~不管是上網找或是從老師部落格裡面尋找資訊!!雖然我是透過同學的幫助才解決了錄影的問題!!但是經由此次的作業,可以知道其實只要知道如何設定參數,就可以透過BCB寫程式來控制Webcam做你想要他做的事。其實事情都不會太困難的~只要知道方法,就可以解決!

2012年5月1日 星期二

HW02


這次的作業基本上就是如何撰寫WebCam錄影程式
錄影檔案名稱需要用到capFileSetCatureFile,而內定是C:\CAPTURE.AVI
之後還要再配置視訊檔磁碟空間capFileAlloc
開始錄影有分兩個不同函式capCaptureSequence,capCaptureSequenceNoFile
結束錄影有分兩個不同函式capCaptureAbort,capCaptureStop
這裡的參數設定我有稍微卡住一些,之後參考別人所寫的程式才大致上了解

Hw02


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