
char TrackbarName[]="Threshold";
int TrackbarInitValue=127;
int TrackbarStopValue=255;
IplImage* gray = NULL;
IplImage* bw = NULL;
int main( int argc, char** argv )
{
// Show Trackbar
cvCreateTrackbar(TrackbarName,"ShowTrackbar",
&TrackbarInitValue,TrackbarStopValue,onTrackbar);
onTrackbar(127);
cvWaitKey(0); //等待按鍵
}
void onTrackbar(int position)
{
cvThreshold(gray, bw,position,255,CV_THRESH_BINARY);
cvShowImage("Show Trackbar",bw);
}
在此程式中 onTrackbar() 即為一Callback Function
它是用來給系統呼叫的Function
在使用Callback Function時, 你的程式須向系統作簽到的動作, 即你要使用哪一個Callback Function, 此程式cvCreateTrackbar()指令即為此用途, 當系統有相對事件發生後, 此Callback Function就會被執行
問題:
請上網查 Callback Function 的定義
1. 程式中 cvWaitKey(0) 若不執行會如何 ???
2. cvWaitKey(0) 在 cvCreateTrackbar() 之前又會怎樣 ???
3. onTrackbar(127); 可不執行嗎 ???
callback function 可以說是「如果發生了某件事,就做這件事」。
回覆刪除既然都叫我們上網查了,感覺上查到最好懂的就是這樣一句話.
也就是在寫程式的過程中,我們寫好了一個function,而且讓這個function在符合的條件下執行,如果條件不符合,那麼function就不會執行.
1.cvWaitKey(0)
這個東西不執行的話,圖片的畫面就不會停留,變成一執行程式之後,畫面只會閃一下就跳掉了.
2.cvWaitKey(0)在cvCreateTrackbar()之前
如果放在cvCreateTrackbar()之前,執行結果會面成灰色的畫面.
3.onTrackbar(127)
當然可以不執行...不執行程式一樣會跑,不過執行的結果一樣會是灰色的畫面...= =