VideoCapture视频操作类的详细解读示例Demo

/********************************************************************************************************************** 
程序功能: 
        一个测试VideoCapture视频操作类的Demo
开发环境: 
        OpenCv2.4.8 + VS2012 + Halocn10.0 + Win10
时间地点: 
        陕西师范大学 2016.10.9
作者信息: 
        九月----马卫飞 
***********************************************************************************************************************/  
#include <stdio.h>
#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

#define  WINDOWNAME    "【读取视频】"

/*************************************************【Main函数】*********************************************************
*模块说明:
*        控制台应用程序的入口,我们的程序从此块开始执行
**********************************************************************************************************************/ 
int main()
{
	 //【1】读入视频
	 cv::VideoCapture capture;                     //【1】首先,实例化一个VideoCapture类的类对象capture
	 capture.open(".\\Image\\1.avi");              //【2】然后,初始化这个类对象,将capture这个对象与打开的视频文件关联起来
	 //【2】测试视频文件是否成功打开
	 if(capture.isOpened())
	 {
		 std::cout<<"【帮助信息】视频文件成功打开"<<std::endl;
	 }
	 else
	 {
		 std::cout<<"【帮助信息】视频文件打开失败"<<std::endl;
	 }

	 //【3】获取视频相关信息---帧数                //【3】获取视频相关的属性信息,具体是什么信息,和参数宏有关
	 long iTotalFrame  = capture.get(CV_CAP_PROP_FRAME_COUNT);
	 int  iFrameHeight = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
	 int  iFrameWidth  = capture.get(CV_CAP_PROP_FRAME_WIDTH);

	 std::cout<<"【帮助信息】这个视频总共包含的帧数 ="<<iTotalFrame<<std::endl;
	 std::cout<<"【帮助信息】帧图片的高度           ="<<iFrameHeight<<std::endl;
	 std::cout<<"【帮助信息】帧图片的宽度           ="<<iFrameWidth<<std::endl;
	 std::cout<<"【帮助信息】capture类对象的大小为  ="<<sizeof(capture)<<std::endl;


	 //【3】当VideoCapture类的类对象capture和视频文件关联起来之后,紧接着可以用一个循环,将每一帧显示出来
	 int iCount = 1;
	 while(1)
	 {
		 //【0】显示当前图片的帧号
		 std::cout<<"【帮助信息】输出当前的帧号     ="<<iCount<<std::endl;
		 //【1】实例化一个Mat类对象,用于存储每一帧的图像
		 cv::Mat frame;         
		 //【2】将获取到的每一帧的图像写入frame这个类对象中
		 capture>>frame;   
		 //【3】判断当前是否读取到图像文件,图像容器frame是否为空
		 if(!frame.empty())                        
		 {
			 cv::namedWindow(WINDOWNAME);          //【1】创建一个图片的显示窗口
		     cv::imshow(WINDOWNAME,frame);         //【2】显示当前帧的图片
		     //cv::waitKey(500);                     //【3】延时1000ms
		 }
		 else
		 {
			 break;
		 }
		 //【4】按下键盘上的Q键,退出
		 if(cv::waitKey(500)==27)
		 {
			 std::cout<<"进入循环体"<<std::endl;
			 //std::system("pause");
			 break;
		 }                    
		 iCount++;
	 }
	 std::system("pause");
	 return 0;
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值