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

        在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);
	}
}

       非常精巧。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值





  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值