作者hotrain13 (最幸運的人!!)
看板C_and_CPP
標題[問題] 關於OpenCV鍵盤事件的疑問(waitKey())
時間Wed Mar 9 10:59:04 2016
開發平台(Platform): VC++
額外使用到的函數庫(Library Used):OpenCV
各位前輩好,我有一個問題想請教一下
現在用OpenCV,現在用到waitKey()來抓鍵盤
可是只要跑到這裡,程式就會暫停等按鍵
有什麼方法可以一直在while(1)裡面等待鍵盤,沒有按鍵程式還是會一直跑的方法??
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.130.9.102
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1457492347.A.F3C.html
※ 編輯: hotrain13 (140.130.9.102), 03/09/2016 10:59:25
1F:推 n666160: 試試看waitKey(1)是不是你要的 03/09 12:14
2F:推 suwako: waitKey的參數可以決定等待的時間 03/09 15:09
感謝,把它複雜了><
不過還有一個問題想請教一下
我的程式碼大概如下
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
3F:推 suwako: 建議你貼上完整一點的程式碼 比較能找出問題 03/09 15:36
4F:推 VSei: if ( cvWaitKey(27) >=0 ) { break; } 03/09 16:32
感激不盡,程式碼如下:
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
5F:推 suwako: 我自己簡單測試了一下 沒有抓不到的問題阿 03/10 07:52
改成waitKey(100)就可以了,可能是鍵盤的沒船那麼那麼快@@
感激不盡!
6F:→ bdvstg: 為什麼waitKey不寫在回圈內 印象中畫面需要waitKey來更新 03/10 10:43
寫在for面的話,如果圖更新到一半有按鍵它就會直接跳出重新繪圖
我是希望可以整張圖繪完,有按鍵在重新繪圖
沒有按鍵就一直會原本的圖
7F:推 storm654321: waitKey 要拿來抓有沒有按按鍵不是嗎?@@不是一定要擺 03/10 16:40
8F:→ storm654321: 嗎? 03/10 16:40
抱歉>< ,不是很懂你的意思?
※ 編輯: hotrain13 (140.130.9.102), 03/10/2016 18:31:59