顯示具有 2009S 標籤的文章。 顯示所有文章
顯示具有 2009S 標籤的文章。 顯示所有文章

星期六, 6月 27, 2009

CAM Game Show 2009 大獎

最佳音效獎:

 林炳海: 趕羚羊 14 票
 林崇基: 忍者追殺大逃亡 7 票

最佳美工獎:

 陳佳筠: 雙手萬能 19 票


陳佳筠發表 最佳美工獎 得獎感言!

 李慧娟: 心靈之蛋 7 票

最佳人氣獎:

 劉昌杰: 恐怖的鱷魚牙齒大冒險 8 票
 黃國維: Virtual Joystick 7 票

創意大獎:

 許達易: 串丸子 3 票
 嚴仕佳: 雷射筆射氣球 2 票
 劉育成: 照片瀏覽器 1 票


劉育成創意受肯定, 發表感言!

 劉國昱: 躲避球 1 票
 邱巾倫: 雨天的祈禱 1 票
 黃劭龍: 教室野球 1 票
 黃國維: Virtual Joystick 1 票

最佳遊戲大獎:

 黃國維: Virtual Joystick 12 票


黃國維發表 最佳遊戲大獎 得獎感言!

 黃劭龍: 教室野球 4 票


黃劭龍發表 最佳遊戲大獎第二名 感言!

 劉昌杰: 恐怖的鱷魚牙齒大冒險 4 票
 鄭佳訓: 誰來接招 3 票
 葉秀斌: 踢足球 2 票


葉秀斌作品受肯定, 發表感言!

 方泓智: 跑跑跑 2 票
 

Week 19: 視訊程式夏令營第五天

成果展 上半場 11:00~12:00 展出順序:

 1. 吳坤璋: 太鼓達人之傻傻摸不到
 2. 劉育成: 照片瀏覽器
 3. 劉昌杰: 恐怖的鱷魚牙齒大冒險
 4. 陳志芳: 小兔子吃蘿蔔
 5. 許智凱: 調色盤
 6. 嚴仕佳: 雷射筆射氣球
 7. 劉國昱: 躲避球
 8. 林炳海: 趕羚羊
 9. 何宗儒: 躲避球
 

 

 
下半場 13:00 ~ 15:00 展出順序:

 10. 葉秀斌: 踢足球
 11. 黃文凱: 隕石大爆破
 12. 方泓智: 跑跑跑
 13. 李慧娟: 心靈之蛋
 14. 方佑平: 打地鼠之敘情版
 15. 鄭佳訓: 誰來接招
 16. 曾鈞鈺: 打磚塊
 17. 陳佳筠: 雙手萬能
 18. 吳仕閔: 拳心拳力
 19. 黃雅綉: 打磚塊之頂著紅盤子的紅人
 20. 黃鈺雯: 敲企鵝
 21. 張智銓: 電流急急棒之太胖很難走到終點
 22. 許夢涵: 打桌球
 23. 邱巾倫: 雨天的祈禱
 24. 林崇基: 忍者追殺大逃亡
 25. 許達易: 串丸子
 26. 馮國棟: 守護
 27. 黃劭龍: 教室野球
 28. 李茂平: 滂沱大雨
 29. 謝獻其: 棒球打擊遊戲
 30. 黃國維: Virtual Joystick

 成績 已經上傳, 感謝大家的努力!
 

星期四, 6月 25, 2009

Week 19: 視訊程式夏令營第四天

昨天原本很沉悶的電腦教室, 今天同學們為自己的遊戲加上配樂之後, 頓時歡樂起來,...



星期二, 6月 23, 2009

Week 19: 視訊程式夏令營第二天



我可以

詞曲:大支 編曲/j wu

小朋友你長大想當什麼
乘著夢想翅膀 你可以盡情飛翔
夢想我小時候連怎麼寫也不知道
所以你也會像我一樣 實現一天總會來到

你會是下一個陳詩欣 下一個李昌鈺
你是下一個周杰輪 你是下一個王永慶
小朋友 你絕對可當最好的那些
離你不遙遠一瞬間 人人都會有功練

出發吧 遠足去大好前途
你的一小步 也都是你的一大步
小朋友每一步都是阿姆司壯登上月球 加油
快把樂高疊成摩天大樓 你的夢 會像風箏高高飛在天空
你的夢會像蠟筆畫的紅色蘋果
你的夢作在起床以後 不是夢 小朋友 大朋友

讓我們一起說 !

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵

小朋友夢是如此美好 但如果你還一直不起床那就不好
聰明的小孩努力成長像小大人 讓美夢成真看他們眼神多認真
可能 你已經等不急轉大人 搖頭跟在幫派混 這不是你要的人生
小妹妹逃出家門 援交能出賣靈魂 幾千塊保險套就不怕愛滋病男人
好的不好學 壞的都不用學 給自己點時間長大分辨
來張開手掌命運線成功線點點點 ok
握起來一切都在自己手裡 give me five
把刀放下來 把毒品放下來 把衣服穿起來 把課本撿起來
彩虹還是會有色彩 你也不會只是黑白 迷失的小孩跟我們一起唱來

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵

小朋友你多久沒做夢了
睡不著
爸爸喝醉大吵大鬧
媽媽打牌遲到
沒載你到學校
放牛吃草 B 段班怎麼像大樹一樣高
老師叫壞學生滾出去 就好比醫院不收你原因是因為你生病
這哪是教育 打開電視胡鬧的大人們
怪力亂神烏煙瘴氣的新聞
小朋友看著我們 我們看著你們
小朋友學習的人 不只是模範生

小孩子像張白紙 成長會寫下彩色的字
握筆的人 我們都是
有什麼園丁 便有什麼花園不是嗎?
一起努力撒下希望的種子吧!

讓夢想開花 快快長大 好好長大 要比哥哥爸爸還要偉大

未來棟樑快點茁壯 因為我們很快就需要更多力量
更多知識讓子彈上膛 更多戰士讓明天打勝仗

不論你是哪來的小孩 都可成就更好的未來!
新的一代快快站起來 我們會改變這個時代!

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵!!
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵!!
  

星期一, 6月 22, 2009

Week 19: 視訊程式夏令營第一天



今天同學們的表現都很不錯, 藉由這樣撰寫程式的經驗, 我相信同學自己也會產生一些親自撰寫程式才會有的感受, 這些都是成為程式設計師必經的歷程! 加油!
 

星期一, 6月 08, 2009

Week 17: 來收集龍珠吧!



我花了很多時間在網路上找龍珠的圖片, 最後終於在 伊莉討論區 的這張圖中找到:



然後用 Photoshop 把龍珠擷取出來...

範例程式變數說明:
用 (iObjectX1, iObjectY1) 來代表龍珠圖片出現的左上角座標,
龍珠圖片的寬與高分別用 iMarkWidth, iMarkHeight 這兩個變數儲存,
因此, 龍珠圖片的右下角座標 (iObjectX2, iObjectY2) 的計算公式為:
iObjectX2 = iObjectX1 + iMarkWidth;
iObjectY2 = iObjectY1 + iMarkHeight;
因此, 當我們在 callback function 中處理完所有的事情後, 必須給龍珠設定一個新的座標。假設新舊座標的位移量為 ( iDeltaX, iDeltaY ), 新的座標則為
( iObjectX1 + iDeltaX , iObjectY1 + iDeltaY)
當 iDeltaX > 0 時, 表示龍珠是向右移動的, 反之, 當 iDeltaX < 0 時, 表示龍珠是向左移動的; 同理, iDeltaY 則是控制龍珠上下移動方向。

if (iObjectX2 > 320)
iDeltaX = -10;
if (iObjectX1 < 0)
iDeltaX = 10;

if (iObjectY2 > 240)
iDeltaY = -10;
if (iObjectY1 < 0)
iDeltaY = 10;

最後, 龍珠就可以跑來跑去了!



星期四, 6月 04, 2009

Note: 期末考後天天加課!

為了使本學期之作品成果展順利進行, 本課程將於期末考後一週 6/22-26 9:00~16:00 天天在 S513-1 教室加開課程, 成果展 CAM Game Show 2009 訂於 6/26 早上 10:00 在 S513-1 教室舉行。

星期四, 5月 28, 2009

Week 16: 如何去除監視畫面中的雜訊影響?

0. 我噗浪的帳號: YKLee
 如果期末 WebCam 程式寫不出來, 這邊可以找到我...

1. 如何去除監視畫面中的雜訊影響?
 
當我們建立好背景影像, 如果沒有物件闖入監視畫面中, 在最理想的狀況下, 監視畫面應該是全黑的才對。可是由於光線變化及雜訊的影響下, 總會有一些像素點與原來背景的色彩值差距過大, 因此產生上圖中的小白點。
 
 
 
我們該如何去除這些雜訊點的影響呢?
 
 

如果我們將畫面分成一個一個的 8*8 區塊, 在區塊中的亮點總數如果沒有超過一半(32), 那我們就將整個區塊設成全黑區塊, 從上圖的實驗我們可以發現, 右下角的圖片已經全黑了。
 
 
 
如果區塊中的亮點總數如果超過一半了, 那我們就將整個區塊設成全白區塊, 從上圖的實驗我們可以發現, 右下角的圖片只有手部的部分被設成全白區塊。

 SampleProgram16.txt
 
2. 如何與畫面中的虛擬物件互動呢?



換句話說, 就是伸手將畫面中的 WebCam 拍掉!



SampleProgram17.txt
 

星期二, 5月 26, 2009

Week 15: 如何在視訊視窗添加圖片?

直接將視訊擷取視窗中, (20, 20) 至 (50, 50) 的方塊, 塗成綠色:
SampleProgram13.txt

讀入一張 BMP 影像, 並將其色彩值存到 ucMarkR[][], ucMarkG[][], ucMarkB[][] 之中:
SampleProgram14.txt

將 ucMarkR[][], ucMarkG[][], ucMarkB[][] 中的影像, 顯示在視訊擷取視窗中:
SampleProgram15.txt

星期二, 5月 19, 2009

Week 14: 背景圖相關之理論與實作

今天一上課, 我們先補充關於如何取背景圖的理論。在攝影機不動的情況下拍攝靜物, 照理說, 連續兩個畫面(frame)應該是完全一樣的; 然而, 寫程式分析, 卻發現兩張畫面看起來一樣, 實際上卻有稍稍不同, 色彩值因為光線變化 (也許是因為光源閃爍, 或是空氣中的灰塵影響!), 讓不同畫面中, 相同位置的色彩值產生細微的不同。

假設在沒有雜訊的情況下,
第 k 個畫面的位置 (i,j) 的色彩值為 f k (i,j), 雜訊的函數為 X k(i,j),

假設我們所擷取到的色彩值為 F k (i,j),
因此,

 F k (i,j) = f k (i,j) + X k(i,j)

如果我們取連續 30 個畫面色彩值之總和

如何計算色彩距離的臨界值(Threshold) 的範例程式:
SampleProgram12.txt
 

星期二, 5月 12, 2009

Week 13: 背景圖與臨界值的建立

1. 將監視是否有物件的輸出畫面改成黑白畫面
 白: 與背景圖出現過大的色彩差距
 黑: 與背景圖色彩相近
 SampleProgram9.txt

2. 如何建立一張背景圖?
 取連續多張背景影像的平均。
 可以設計另外一個 Callback Function, 專門負責連續取 30 個畫面,
 將其平均後, 當作背景影像。
 SampleProgram10.txt
 SampleProgram11.txt

3. 如何計算色彩距離的臨界值 (Threshold)?
 當我們取得一張背景圖後, 我們如何判斷某個像素點是屬於背景?
 還是有物件進入到我們的畫面中呢?

Note: 下週上課以前務必繳交期末專案構想到 Homework Show @ VCGC,
   缺交的同學期末成績扣 5 分。

 

星期二, 5月 05, 2009

Week 13: Viedo Format

上星期期中考第三階段, 有不少同學發現明明同一個程式, 借用別人的 WebCam 來考試, 程式就可以順利執行, 用自己買的 WebCam 來 DEMO 程式, 偏偏就執行不出來。

我們今天就是要針對這個問題討論, 希望同學可以了解不同的攝影機, 傳送視訊資料進電腦的方式也是可以不同的, 一個好的程式設計師應該有能力可以處理不同廠牌的 WebCam, 一樣可以寫出一個好的程式來控制它的。



上面這個 Viedo Format 對話視窗是使用 capDlgVideoFormat(hwndVideo) 這個函式開啟的, 由視訊裝置的硬體商所提供的, 當你灌好驅動程式時, 就可以用 capDlgVideoFormat 這個指令將其呼叫出來, 請同學自己寫程式試試看, 看看自己的 WebCam 提供了哪些視訊格式。

視窗的左邊是選擇 解析度, 也就是攝影機取像的畫面的大小; 中間的 圖素深度(位元)及壓縮 可以選擇用不同的格式來傳送每一個圖素 (pixel) 的色彩值, 及需不需要壓縮; 最右邊的大小(位元組) 會依照前面兩項的選擇, 自動計算出所需要的緩衝記憶體的大小。因此, 解析度越高, 最右邊的位元組大小當然也會跟著提高。

另外, 不同的圖像深度所需要的記憶體大小也會跟著不同。同學可以參考下列網頁, 以便了解不同的格式之間的差異為何。
 
1. http://www.fourcc.org/yuv.php

2. Wikipedia: YUV

今天課堂上第二個討論主軸是介紹去年修課同學的期末作品 Cam Game Show 2008 

( Note )
本週作業, 請同學將自己的期末作業的初步構想貼到 Homework Show of VCGC 部落格中。
 

星期二, 4月 28, 2009

Week 11: 期中考試第三階段

本週進行期中考第三階段: 程式實測。

同學必須完成所有範例程式的執行。

星期五, 4月 24, 2009

News: 福山與台北植物園 已建置二維條碼導覽

〔中央社記者楊淑閔台北24日電〕原始新聞連結

農委會林業試驗所今天表示,「農業數位生態館計畫」已在所方所轄的台北植物園及福山植物園內完成數位化建置,提供民眾透過二維條碼解碼設備查詢相關解說資訊的服務。

林業試驗所指出,「農業數位生態館」是行政院農業委員會為創新農業數位內容價值,改善傳統文字解說牌無法詳述動植物特性,以及內容無法快速更新等缺點,藉由行動設備傳輸二維條碼技術,讓使用者可即時線上透過行動設備搜尋,讀取豐富植物解說與導覽資訊的服務。

林試所表示,依「農業數位生態館計畫」,已在所方所轄的台北植物園及福山植物園內完成數位化建置。

林試所並說,今年完成新增二維條碼的福山植物園,擁有豐富的植物與動物資源,不但可以欣賞原生植物之美,還有機會看到山羌、野豬、鴛鴦等野生動物,是台灣生態的寶庫,遊客可在此園經驗到與一般植物園或森林遊樂區完全不同的生態景致。

林試所補充,所方所轄的山仔頂植物園、埤子頭植物園、四湖海岸植物園、恆春熱帶植物園及扇平森林生態科學園等,也將陸續完成二維條碼解說牌建置。

星期二, 4月 14, 2009

Week 9: 期中考第二階段

本週進行期中考第二階段: 口試。

缺席名單:
94363063 林郁勛
95360361 葉 廷
96363043 楊倍權
 

星期四, 4月 09, 2009

Week 8: 期中考第一階段

本週進行期中考第一階段之筆試。

缺考同學名單如下:

94360912 林崇基 (已補交)
94363063 林郁勛
95360104 欒如雲
95360361 葉 廷
95361090 吳坤璋 (已補交)
96363043 楊倍權

請缺考同學於 4/13 以前補交。
 

星期二, 4月 07, 2009

Note: 期中考的進行方式

幾經思考, 本學期的期中考, 我決定分成三階段, 分別在第 8, 9, 11 週進行。

第一階段: 以筆試的方式進行, 請同學參考課程部落格, 針對 Week 1 ~ 7 的課程內容, 逐週寫下自己已經掌握哪些技術, 哪些技術則尚未弄懂。

第二階段: 以口試的方式進行, 針對同學所寫下的學習狀態進行個別討論, 找出自己的學習問題。

第三階段: 檢驗程式實作, 同學必須完成範例程式的實作。

這樣做的目的是希望幫助同學面對、了解自己的學習狀況, 希望可以透過期中考試, 協助同學:
 1. 完全理解授課內容,
 2. 充分掌握視訊擷取技術,
 3. 擁有 WebCam Programming 的實作能力。
 

星期四, 4月 02, 2009

Note: 本課程之期中考試

課程公告:
 本課程期中考試將於 Week 8 之課堂上以口試的方式進行, 考試內容將以本課程所教授之 WebCam Programming 之所有內容, 包括:

 a. 基本 C++ Builder 之基本觀念。

 b. WebCam Programming 之基本觀念與指令。

 c. 本課程在課堂上所進行之四個實驗:

  1. 靜態影像擷取之實驗

  2. Callback Function 之實驗: 在 Label 顯示擷取之 frame 總數。

  3. 直接從記憶體擷取視訊畫面。

  4. 將監視畫面與背景圖片相減所得到之差異影像隨時顯示出來。

 d. 八個範例程式中所有指令之用法。

  1. SampleProgram1.txt
  2. SampleProgram2.txt
  3. SampleProgram3.txt
  4. SampleProgram4.txt
  5. SampleProgram5.txt
  6. SampleProgram6.txt
  7. SampleProgram7.txt
  8. SampleProgram8.txt
  
  
  

Week 7: 如何從記憶體直接擷取視訊畫面?

本週要進行的討論主題是 - 如何從記憶體直接擷取視訊畫面?

我們所設定的實驗是: 透過使用 callback function 的方式, 將所擷取到的畫面顯示到另一個影像元件之中。



首先, 我們先在 MainMenu 這個元件中建立一個視訊擷取視窗 Callback function 的控制開關, 透過這個 on/off , 我們可以隨時開啟或關閉是否要對擷取視窗的畫面進行處理。

SampleProgram6.txt

透過 capSetCallbackOnFrame 這個函式設定: 當視訊擷取視窗(代碼為 hwndViedo) 取得一個 frame 後, 必須執行我們所定義的 callback function: FrameCallBack,

capSetCallbackOnFrame(hwndVideo, &FrameCallBack);

LRESULT CALLBACK FrameCallBack( HWND hwndCapture, PVIDEOHDR lpvhdr );

在我們所自行定義的 FrameCallBack callback function 中, 有兩個輸入參數, 第一個參數 HWND hwndCapture, 指明哪一個視訊擷取視窗, 即該視訊擷取視窗的 handle, 第二個參數 PVIDEOHDR lpvhdr, capSetCallbackOnFrame 這個函式會自動把視訊擷取視窗的相關資訊透過 PVIDEOHDR lpvhdr 這個結構變數, 讓 FrameCallBack callback function 來使用。

有關 PVIEDOHDR 這個結構的相關資訊, 可以在 vfw.h 中, 找到如下的結構定義:

/* video data block header */
typedef struct videohdr_tag {
LPBYTE lpData;      /* pointer to locked data buffer */
DWORD dwBufferLength;   /* Length of data buffer */
DWORD dwBytesUsed;   /* Bytes actually used */
DWORD dwTimeCaptured;  /* Milliseconds from start of stream */
DWORD_PTR dwUser;   /* for client's use */
DWORD dwFlags;      /* assorted flags (see defines) */
DWORD_PTR dwReserved[4];   /* reserved for driver */
} VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;

透過 結構 videohdr_tag 的宣告, 我們獲知擷取視窗的 data buffer 的指標可以用 lpData 這個變數來取得, 即

CaptureData = LPVIDEOHDR(lpvhdr);
ptrCapture = CaptureData->lpData;

// 全域變數宣告
LPVIDEOHDR CaptureData;
BYTE *ptrCapture, *ptrImage;

說明:
1. CaptureData 是全域結構變數, 其資料型態亦為 PVIDEOHDR。
2. *ptrCapture 與 *ptrImage 是兩個指向記憶體位址的全域指標變數。

本週的第一個實驗要做的事, 說穿了就是把某一塊記憶體(視訊擷取視窗資料暫時存放區/data buffer)複製到另一塊記憶體(影像物件存放色彩資料的記憶體)之中。因此, 我們只要弄清楚兩個記憶體的起始位址, 自然可以輕鬆完成實驗。


 
SampleProgram7.txt
 
第二個實驗則是需要針對監視畫面內容稍做計算, 畫面的下角是背景圖, 監視畫面與背景圖相減所得到的差異影像, 則會被放到右下角的圖片中。





SampleProgram8.txt
 

星期二, 3月 24, 2009

Voting Report: 關於課程進度的速度

你覺得目前課程進度進行的速度如何?

 太慢   3 票 ( 14 % )
 適中  17 票 ( 80 % )
 太快   1 票 ( 4 % )

 總投票數: 21 票
 投票日期: 2009/03/17 ~ 24