2014-02-28 50 views
0

我正在看書。作者清楚地解釋了這個功能。問題是我的程序沒有檢測到任何被按下的鍵,所以我不能終止窗口或停止循環。這是問題的一部分。cvWaitKey()不工作?

while(1) 
    { 
     frame = cvQueryFrame(capture); 
     if (!frame) 
      break; 
     cvShowImage("Example2", frame); 
     char c = cvWaitKey(33); 
     if (c == 27) 
     { 
      printf("Yes"); 
      break; // 27 == escape button 
     } 
    } 

我正在使用Mac(我正在從終端運行程序)。

+2

當您使用'cvWaitKey(X)'時,程序將等待** X **毫秒以便您按下該鍵。你沒有足夠的時間來檢測按鍵。有關詳細信息,請參閱[文檔](http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=cvwaitkey#waitkey)。 – scap3y

+0

@ scap3y,即使增加延遲時間,「if(c == 27)」也不起作用。這就是爲什麼我把''是「'表示我已經按下了按鈕。我把它設置爲'cvWaitKey(10000)',沒有任何希望。這就是爲什麼我對這種無法正常工作的微不足道的東西感到震驚。 – CroCo

+0

@CroCo你嘗試過exit()而不是break嗎? –

回答

1

可能有兩種可能性,

  • 重點不是簡歷的窗口當你按下鍵。

  • 嘗試使用只是,cvWaitKey()。

+0

cvWaitKey()等於cvWaitKey(0),所以等待直到按下一個鍵。 –