学习OpenCV2——控制视频暂停与播放
2016-03-10 20:01
357 查看
在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()实现了视频的暂停与播放。
非常精巧。delay=30,delay>=0为true。执行waitKey(30),frame显示30ms。如果没有按键,waitKey(30)返回-1,不执行waitKey(0),进入下一次循环。如果有按键,返回按键的ASCII值,waitKey(30)>=0为true,执行waitKey(0),程序暂停,直到有键盘输出才进行下一次循环。
上面程序中按任意键都能实现暂停和播放,如果要设定为某个具体按键,比如用空格控制暂停。可以这么改
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值
相关文章推荐
- OPENCV2学习(1)_生成运动模糊核(OPENCV2 实现Matlab中fspecial的motion功能)
- OpenCV2 使用分水岭算法对图像分割的个人理解 cv::watershed()
- opencv2灰度图像的变换
- opencv2学习笔记:4.2计算图像直方图
- opencv2 cv::Mat 释放内存时 release()的错误
- opencv2 在mfc窗口中显示关于cv::Mat 的解决方法
- opencv2 circle rectangle
- 视频播放程序改良
- 实现图像处理算法中采用策略“Strategy”模式+Qt中相对路径
- opencv 机器学习 SVM 支持向量机初探+Fourier Discriptor特征分类
- 配置OpenCV2和OpenCV3开发环境笔记
- eclipse配合opencv的设置
- OpenCV SIFT特征学习:(一)初识SIFT
- OpenCV SIFT特征学习:(二)SIFT匹配
- OpenCV SIFT特征学习 (三) 特征如何更好的匹配(上)
- opencv中RGB转HSV
- 使用Opencv2出现logger.h(66): error C4996:fopen
- 学习OpenCV2 —— 直方图匹配
- 学习OpenCV2——opencv2.4.8和opencv3的安装和配置
- 学习Opencv2——粒子滤波Condensation算法