[問題] 關於OpenCV鍵盤事件的疑問(waitKey())

看板C_and_CPP (C/C++)作者 (最幸運的人!!)時間10年前 (2016/03/09 10:59), 10年前編輯推噓6(602)
留言8則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): VC++ 額外使用到的函數庫(Library Used):OpenCV 各位前輩好,我有一個問題想請教一下 現在用OpenCV,現在用到waitKey()來抓鍵盤 可是只要跑到這裡,程式就會暫停等按鍵 有什麼方法可以一直在while(1)裡面等待鍵盤,沒有按鍵程式還是會一直跑的方法?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.130.9.102 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1457492347.A.F3C.html ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 10:59:25

03/09 12:14, , 1F
試試看waitKey(1)是不是你要的
03/09 12:14, 1F

03/09 15:09, , 2F
waitKey的參數可以決定等待的時間
03/09 15:09, 2F
感謝,把它複雜了>< 不過還有一個問題想請教一下 我的程式碼大概如下 while(1){ while(1){ for(){ 程式碼; } waitKey(1); //然後BREAK } } 有時候他會偵測不到按鍵,是因為太快嗎? ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 15:17:15 ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 15:17:56

03/09 15:36, , 3F
建議你貼上完整一點的程式碼 比較能找出問題
03/09 15:36, 3F

03/09 16:32, , 4F
if ( cvWaitKey(27) >=0 ) { break; }
03/09 16:32, 4F
感激不盡,程式碼如下: while(1){ . . . while (1){ //希望可以退出這個迴圈 for (int q = 30; q < 149; q++) { cvShowImage("image", Image); for (int w = 0; w < 4000; w+) { FillRectangle(XYZ_New[q][w][0], XYZ_New[q][w][1], XYZ_New[q][w][2]); } Delay_DoEvents(0.001); } key = waitKey(1); //有時候抓不到 printf("%d\n", key); if (key == '1') { Pointx = Pointx + 10; break; } else if (key == '2') { Pointx = Pointx - 10; break; } } } ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 18:52:36 ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 18:53:25 ※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 18:55:50

03/10 07:52, , 5F
我自己簡單測試了一下 沒有抓不到的問題阿
03/10 07:52, 5F
改成waitKey(100)就可以了,可能是鍵盤的沒船那麼那麼快@@ 感激不盡!

03/10 10:43, , 6F
為什麼waitKey不寫在回圈內 印象中畫面需要waitKey來更新
03/10 10:43, 6F
寫在for面的話,如果圖更新到一半有按鍵它就會直接跳出重新繪圖 我是希望可以整張圖繪完,有按鍵在重新繪圖 沒有按鍵就一直會原本的圖

03/10 16:40, , 7F
waitKey 要拿來抓有沒有按按鍵不是嗎?@@不是一定要擺
03/10 16:40, 7F

03/10 16:40, , 8F
嗎?
03/10 16:40, 8F
抱歉>< ,不是很懂你的意思? ※ 編輯: hotrain13 (140.130.9.102), 03/10/2016 18:31:59
文章代碼(AID): #1Mtv5xyy (C_and_CPP)
文章代碼(AID): #1Mtv5xyy (C_and_CPP)