首先,在cvWaitKey(k)中,k的单位为毫秒,1000毫秒等于1秒,同时,根据资料的说明,在显示图像的时候,每秒显示27、28帧的时候,我们看到的视频是流畅的。同时采取25帧的话,k=1000/25=40。即,没处理完一帧后,程序会等待40毫秒才会读取下一帧;
1.显示图像,一般要在cvShowImage()函数后加一句cvWaitKey(0),此时程序显示出图像后将暂停,等待接收一个键盘输入;若没有这句话,则显示图像的代码很快就执行过去了,所以要用cvWaitKey()来暂停。
2.显示视频时,一般用cvWaitKey(delay) delay是延时的ms数。表示显示一帧,然后等delay ms ,再显示下一帧。如果没有cvWaitKey的话, 那么循环里面的每个指令执行时间为0.0000000001s,总之趋近于0.那么capture可能有10000帧图像, 那么10000帧图像也之需要0.000001s就播放完了, 结果你还没看到画面,就已经黑屏了 ....
若delay=0,则无限期等待,直到按下键盘任意按键。
3.
char c = cvWaitKey(200);
if (c == 27)
break;
c :为按键的ASCⅡ码值,常用ASCⅡ码值:
ESC:ASCⅡ码27
回车:ASCⅡ码13
换行(Ctrl + Enter):ASCⅡ码10
空格:ASCⅡ码32