作者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/cn.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