2008年6月11日 星期三

期末程式

我所做的是一個非常簡單的小互動,
首先,先取得背景,在最上排有一行
字是(請快摸)。



有東西進入了,不過並沒有發生互動?




原因是,要碰到視窗的最上層才會有互動
(請快摸)會變成(你摸到了)




這個程式是改學長的程式,再做一些小改變,
Timer1是抓背景,
Timer2是判斷跟背景有不同的地方,利用
control先設為0,若有偵測到東西control就+1,
再用if、else作判斷,Timer4執行互動功能。

void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
int control=0;
capSetCallbackOnFrame(hwndCapture,&FrameCallBack);//呼叫回呼函數詰取影像
for(i=0;i<10;i++)>
for(k=0,j=0;j
buffer[i][j][0]=abs(source[i][j][0]-background[i][j][0]);
buffer[i][j][1]=abs(source[i][j][1]-background[i][j][1]);
buffer[i][j][2]=abs(source[i][j][2]-background[i][j][2]);
if(buffer[i][j][0]>thresholdbuffer[i][j][1]>thresholdbuffer[i][j][2]>threshold) { //有物件進入地方 與 原背景色碼不一樣的地方呈現 白色
control++; }
if(control!=0)
Timer4->Enabled=true;
else {
Timer4->Enabled=false;
control=0;
Label1->Font->Color=clGreen;
Label1->Caption="請快摸請快摸請快摸請快摸請快摸請快摸請快摸請快摸請快摸"; } }

還有老師再課堂上問的一個問題:

capPreviewRate(hwndCapture,66);

capPreviewRate函數來設定每秒預覽張數,

每秒30張的話,則1000/30約為66。

心得:

這真的是一個簡單的小互動,對於我原本都不懂BCB

到現在可以理解以學長的程式改有一個簡單的互動,

不過學長的程式,有許多地方不了解,

我還要再多多了解,才能達到這門課的目標

,看到自己在這門課有一小點進步,很開心當初有修。





沒有留言: