2009年3月3日 星期二

靜態影像擷取~

(如看不清楚,請自行點開放大看.)

情況一: 攝影機拍攝內容不變, 連續拍攝 A 與 B, 計算其平均差異。
(A+B)/2:


(B-A)/2:

(注:Button 1 即 按鈕A ,以此類推.)

畫面分別為~
左上:視訊擷取畫面.
右上:儲存視訊的靜態影像A.
左下:儲存視訊的靜態影像B.
右下:A&B靜態影像的平均差異值的影像C.

情況二: 攝影機拍攝 A 後, 放置一物體到攝影機前, 在按 B 取得影像陣列 B 內容, 再計算其平均差異。
(A+B)/2:


(B-A)/2:



雖然之前修過老師的課,
但是因為隔得有點久了,
其實也忘得差不多了.
所以其實花比較久的時間,
在回憶和看以前曾寫過的程式.

起先~
我一直搞不清楚,使用到ScanLine[ ]時,
到底是什麼時候就讀取data的,
又是用了什麼將單張影像顯現的. (現在還是沒搞懂...)

上課的時候,
我的進度一直只到把A&B兩按鈕的功用做出來而已.
再來就一直無法前進.

但是課堂上老師說他並沒有使用到ScanLine[ ],
所以回家繼續寫的我,
就去找了有相當功用的程式.
最後我選擇用GetRValue(),GetGValue(),GetBValue(),
去擷取Image的RGB值,
然後將擷取的data以RGB值顯現.

因為以前寫的程式,有RUN出來.
原本以為會很快就能改出來,
沒想到居然RUN了好幾次都沒反應.

如果有偵錯出來,那我還能debag.
但是難就難在,什麼錯誤訊息都沒跳出來.
所以我又耗了一下.

最後,
也不知怎麼了,
我把for loop範圍的
BitmapInfoHead.biHeight和BitmapInfoHead.biWidth
改成一般數值.

居然就能顯現了~
真是可喜可賀啊!!~ (啥鬼)

在情況一時~

因為攝影機拍攝內容不變,
所以兩張圖的差異並不大.
(雖然有時候手可能會稍微抖一下啦~
或是光可能也會有點影響.)
但是基本上,還是一張看不太出來差別的圖~ (相加除以二的情況)

若是相減除以二的情況,
則是一張偏黑的圖.

情況二時~~

相加除以二的情況,
則有浮水印般的透明效果.

若是相減除以二的情況,
因為有放了一個物體到畫面中,
所以畫面的差異度變高了.

但是~
由圖可以發現,
在A畫面是黑色或深色的區塊,

若物體剛好擋到的話,
就能看到較清楚的原物體的樣子.
(ex:圖中的瓶子和橡皮擦)

不過比起原來的顏色,
應該會更暗些.

沒有留言: