- 在這學期學到什麼?
這學期修了這門視訊處理,學到用openCV搭配C++的程式,openCV是一個可以透過程式去修改圖片、視訊,上課一開始觀察老師給的範例檔,思考範例的運作原理,不懂的時候上網找資料或是跟同學討論,從摸索中認識openCV,在當下不只是學程式語言,同時練習解決問題的方法;老師上課時候會分享一些程式設計相關的文章,在當中認知到資工這行畢業後不只是當一個"寫"程式的人,而是"設計"程式人。 - 這學期最喜歡的作業?
最喜歡的是顏色偵測的部分,因為顏色的時候是存取顏色的BGR的值,透過寫一些判斷去處理視訊;印象最深刻的是,在做畫布程式的時候,只要將程式碼改個位置出來的結果完全不相同,有一種很奇妙的感覺。 - 對這堂課的建議
這堂課上課感覺是輕鬆的,學到的東西是很真實的,自己練習寫程式結果立即的顯示在螢幕上,看到自己的人在螢幕上被惡搞(哈~),很好玩的經驗,同時對C++有更深的認識(大一的時候是修JAVA),這堂課真的很有趣。
2010年6月13日 星期日
課程回顧
HW09: X-Projection and Y-Projection
期末專題: 桌上球
- 期末專題DEMO
- 主題: 桌上球
- 學生: 聶宏仁、陳威廷
動機:
期中專題做完後,想了想,期中的好像只能上下移動,期末想把期中的改一下,改成可以上下左右自由移動的遊戲,有點像在遊樂場玩的一種機器,一樣是兩個人對打中間的圓盤,因為很喜歡這個遊戲,想說是是看能不能做到一樣的效果。
遊戲介紹:
- 起始畫面有三個框框,中間兩個為顏色感應區域,角落的小框框為模擬的按鈕
- 啟動按鈕,使用者1顏色感應
- 再次啟動按鈕,使用者2顏色感應
- 再按一次,進入遊戲
- 遊戲畫面為一個球場,雙方將橘色的球打進對方的地區就算是贏家
- 一方先贏得5分則遊戲結束
心得:
這次有做到使用者可以左右控制的功能,覺得很興奮,不過在遊的路徑判斷上需要在重新設計,在這次的成品,"球" 與 "球棒"的接觸判斷沒有很順暢,有點可惜。
在期末發表的時候,看到大家玩得當下,覺得雖然寫的時候很累,看到大家玩得很盡興,也很開心。
期中專題: 桌上球
- 視訊處理期中demo
- 組員:陳威廷、聶宏仁
動機:
上視訊處理課到現在,瀏覽一下所學的技術,以及玩過的小遊戲,評估技術後所想出來的小遊戲彈力球。這個遊戲最完美的狀態應該是像桌球一樣可以對打,不過由於技術有限,只好將對打的部分精簡化,讓球自己碰到棒子然後反彈。
遊戲介紹:
畫面一開始先載入一張開場的遊戲規則,經過數秒後進入遊戲主畫面。一開始雙方先各拿一種顏色的東西代表自己,然後放入感應的方塊內數秒,感應後將會有代表雙方顏色的棒子出現,於是電腦就會發球,球碰到棒子後會反彈,撞到牆壁也會反彈,只要有一方沒接到球就算輸了。
遇到困難&解決方法:
1.執行同樣程式有不一樣的結果
因為組員的作業系統不一樣,一個是XP一個是win7,然後程式執行後,一個看得到開始畫面另一個卻看不到,後來發現可能因為圖片的SIZE和遊戲視窗不合,於是調整後這個問題就解決了。
2.要展出時程式不能執行
展出當天我們很早就到教室準備,怕有任何意外的發生,果不其然發生了……,在家裡寫好的程式到現場不能執行,於是我們就先檢查環境變數是否有誤、有沒有加入專案、音樂圖檔有沒有在該資料夾中,檢查確認無誤可是程式依然不能執行。於是又換了台電腦,可是依然不能執行,於是將更早前沒加入背景音樂的程式拿出來執行,結果可以執行,當下就改那個程式重新加入背景音樂,問題解決。可是還是不知道為何會這樣……
3.球的運動方向
這次實做的"球"是用XY放現做判斷,不過有一個現象是,當球的速度太快,會穿透使用者的"球棒"是這次沒有解決的現象,之後在想想看有沒有方式可以解決這方面的問題。
使用軟體:
DEV C++
Microsoft Office Picture Manager
未來展望:
希望可以像桌球一樣對打!!
心得:
能做出來非常的高興,但是離最完美的狀態還是有段距離,不過花了很多時間在想球撞到牆的反射,所以有些地方並不是很精美,不過想到有修這門課覺得很值得,沒想到視訊也可以這麼玩。
2010年5月1日 星期六
HW04: Color Detection

↑ 將視訊當成畫布(正在畫...)

HW03: Pixel-Level Processing in OpenCV

↑ 用線上的圖片跑範例程式(圖片)

↑ 用webCam抓視訊,分出不同的顏色(紅、藍、綠),和插入圖片,使圖片會跑
這次學到圖片中指標的用法
uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
這樣可以抓到ptr1 起始的資料位置(x = 0 ,y = 0 )
接下來用for迴圈,可以一一的指到各個顏色的資料位置
ptr1[3*x] 藍色( Blue )的位置
ptr1[3*x+1] 綠色( Dreen )
ptr1[3*x+2] 紅色( Red )
前3個視窗就是把不要的另外2個顏色設定成0
第四個視窗,則是把另一張圖合併到另一個顏色
ptr2[3*(x+x1)]=alpha*ptr1[3*(x+x1)] + (1-alpha)*ptr2[3*(x+x1)];
先做出兩個指標( ptr1、ptr2 ),alpha(0 ~ 1)表示這兩張圖的混合比例
這是一次很好的經驗
用這個方可可以寫出浮水印的程式耶 = )
HW02: Image-Level Processing in OpenCV
2010年3月28日 星期日
2010年2月28日 星期日
HW01:Capture video from WebCam
心得:
這次第一次使用C++程式抓到webCam的影像,感覺很特別。
剛從網路上找有關OpenCV的資訊,有找到一個昨日關於介紹這次程式的內容,是個介紹很詳細的文章滿不錯的。
先做出兩個視窗
新增了一個叫WebCam2的Box
把frame的訊息同時傳到WebCam,WebCam2兩個Box
可以產生兩個box
接下來要做鏡射
依老師說的找了一下cvFlip的資料
我在將frame傳入webCame2前
用cvFlip將訊號轉向,再傳入
ps.老師上課有提到"cvCloneImage"指令,功用:複製
訂閱:
文章 (Atom)




