从摄像头或视频文件中读取视频流并显示
2016-02-28 23:55
501 查看
实验环境:
Windows10 x64vs2013 + openCV2.4.11
实验目的:
学习OpenCV使用VideoCapture打开视频流的两种方法,了解视频流的读取,异常检测与处理,图像帧的显示。代码:
#include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; /* show 2 methods to read a video stream from online-camera or offline-file C++ Class: VideoCapture */ int main() { // VideoCapture打开视频流方法1:直接在创建类时指定参数 VideoCapture capFromCamera(0); VideoCapture capFromFile("E:\\video\\video.avi"); // VideoCapture打开视频流方法2:通过默认构造函数创建对象,然后通过open方法打开视频流 //VideoCapture capFromFile; //capFromFile.open("E:\\video\\1.avi"); if (!capFromCamera.isOpened() || !capFromFile.isOpened()) { return -1; } namedWindow("capFromCamera", 1); namedWindow("capFromFile", 1); cout << "对视频窗口按下任意键退出" << endl; while (1) { Mat frameFromCamera, frameFromFile; // get a new frame from camera bool frameA = capFromCamera.read(frameFromCamera); // get a new frame from file bool frameB = capFromFile.read(frameFromFile); if (!frameA || !frameB) { cout << "摄像头关闭或视频文件读取到结尾" << endl; break; } imshow("capFromCamera", frameFromCamera); imshow("capFromFile", frameFromFile); // 当前帧被显示后,程序等待33ms,如果期间用户触发一个按键,循环退出,视频读入停止 if (waitKey(33) >= 0) { cout << "用户按下按键,退出程序" << endl; break; } } // 这两句可以省略,在程序结束前,VideoCapture会调用析构函数进行资源的释放 capFromCamera.release(); capFromFile.release(); destroyAllWindows(); cin.get(); return 0; }
相关文章推荐
- iOS开发(OC)中的命名规范
- php小分点
- linux之ssh无密码访问
- SASS的使用
- 算法分析——最大连续子序列和的问题
- 使用杂记
- H5编写页面初探
- php执行流程相关
- 【iOS】自定义TabBarController
- window系统 鼠标右键菜单加载缓慢问题
- 怎样理解阻塞非阻塞与同步异步的区别?
- erlang 中文编码显示乱码问题
- Kernel Functions for Machine Learning Applications
- python(4) - 装饰器2
- [读书笔记]Java类加载过程
- [Locked] Alien Dictionary
- Hibernate实战读书摘要(2)—领域模型和元数据
- [Android]_[Service]
- 线程的优先级
- C#找质数(素数)厄拉多塞筛法