学习OpenCV2——控制视频暂停与播放

版权声明:转载请注明出处 https://blog.csdn.net/GDFSG/article/details/50849626

        在opencv中让程序暂停有三种方法

        waitKey( int delay)   
        如果delay≤0,则程序暂停,直到键盘按键才继续运行,返回按键的ASCII值;如果delay>0,则等待delay毫秒后继续运行。

        getchar( )getch( )  

        当调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止,返回第一个字符的ASCII码。如果出错,返回-1。getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回。

        system("pause")

        从程序里调用“pause”命令。  而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press   any   key   to   exit”的字,等待用户按一个键,然后返回。


        在对视频进行处理的时候,经常需要让视频停一下,以便进行某些操作。比如,做目标跟踪,我们需要在某一帧选定目标,如果视频一直在播放,会对选目标造成干扰。我们可以让视频暂停,选定目标后,选定目标后,让视频继续播放,同时进行跟踪。要实现视频的暂停,显然第一种方法最合适。

       下面的程序用waitKey()实现了视频的暂停与播放。

#include <opencv2\opencv.hpp>  
using namespace cv;  
using namespace std;

int main( )  
{  		
	VideoCapture capture(0);
	if(!capture.isOpened())
		cout<<"fail to open!"<<endl;
	namedWindow("camera",1);

	Mat frame;
	int delay = 30;
	while(1)
	{
		capture>>frame;
		if(frame.empty())
		     break;

		imshow("camera",frame);
		
		if(delay>=0&&waitKey (delay)>=0)
                     waitKey(0);
	}
}

扫描二维码关注公众号,回复: 3020362 查看本文章

       非常精巧。delay=30,delay>=0为true。执行waitKey(30),frame显示30ms。如果没有按键,waitKey(30)返回-1,不执行waitKey(0),进入下一次循环。如果有按键,返回按键的ASCII值,waitKey(30)>=0为true,执行waitKey(0),程序暂停,直到有键盘输出才进行下一次循环。

        上面程序中按任意键都能实现暂停和播放,如果要设定为某个具体按键,比如用空格控制暂停。可以这么改

if(delay>=0&&waitKey (delay)>=32)
       waitKey(0);</span>
     32是空格键的ASCII值





猜你喜欢

转载自blog.csdn.net/GDFSG/article/details/50849626