後來老師有給我們一個學長的範例程式,他已經寫到可以判斷進入畫面的物件了,所以我們只需要再加上讓程式會有反應的部分就好了。
學長的程式畫面如下:
開啟物件偵測
物件偵測中
有物件進入畫面
我的想法是,既然最後是用出現黑色和白色的畫面來判斷進入的物件,那我只要設定當白色畫面出現一定面積大小之後(那就是代表有東西出現在攝影機的畫面內),程式就會顯示出一行字這樣子,表示攝影機偵測到有物件進入畫面。
一開始,要先找到的地方就是程式判斷進入畫面的物件,然後再將物件顯示成白色畫面的程式部份。
這段程式碼在學長程式裡的Timer2(看起來像時鐘的),可以直接點進去,如下:
滑鼠點這個時鐘2下,就可以直接看到裡面的程式碼
我在程式裡加上 int test=0;
當畫面有一個白色的點時,test就加1。
一張畫面是由很多點所組成的,例如 800*600 = 480000 個點,所以我在這邊決定用有5000點的時候,程式才會有反應。
在這個函數結束的時候,如果白色的面積超過5000點,程式就會跳出警告視窗,表示有東西進到攝影機的畫面內。
if(test >5000)
{
ShowMessage("你擋住我了....");
exit(0);
}
執行畫面如下:
出現警告訊息
但是我後來發現警告訊息會一直重複出現,然後在部落格上面看到有其他同學找到解決的辦法,把警告視窗改成用"label"來顯示字串。
所以我就把原本 if 那邊的程式碼改成
if(test > 5000)
Label2-> Caption ="你擋住我了.... ";
else
Label2-> Caption =" ";
出現的畫面如下:
改成將字顯示在 label 裡面
雖然感覺爛爛的,不過至少是把程式會有反應的部份給做出來了。
要程式有其他的反應方式,也大概可以用相同的方法,就是在 if 裡面寫的東西在改一下就好了。
程式碼位置 : http://ss24.mcu.edu.tw/~s5361045/FinalHW.rar
沒有留言:
張貼留言