首先,在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

posted on 2017-03-06 22:35  张酱油。  阅读(1534)  评论(0编辑  收藏  举报