opencv播放视频

一、介绍

视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的。1秒24帧基本就能流畅的读取视频了。

①读取视频有两种方法:

A. VideoCapture cap;

cap.open(“1.avi”);

B. VideoCapture cap(“1.avi”);

②循环显示每一帧:

while(1)

{

        Mat frame; //定义Mat变量,用来存储每一帧

         cap>>frame; //读取当前帧方法一

        //cap.read(frame); //读取当前帧方法二

        imshow(“视频显示”, frame); //显示一帧画面

        waitKey(30); //延时30ms

}

二、读取视频示例程序

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

int main() 
{
	VideoCapture cap;
	cap.open("F:/1.avi");
	if (!cap.isOpened())
		return -1;

	Mat frame;
	while (1)
	{
		cap >> frame;  //等价于cap.read(frame);
		if (frame.empty())//如果某帧为空则退出循环
			break;
		imshow("avi", frame);
		waitKey(20);
	}
	cap.release();    //释放资源
	return 1;
}

三、读取视频说明

打开的视频可以是本地视频如:
VideoCapture cap(“1.avi”);
也可以是网络视频如:
VideoCapture cap(“http://www.laganiere.name/bike.avi“);
读取视频一定要加异常判断
A.打开视频失败(各种原因)
B. 取帧失败异常(程序结尾判断)
ex1:
if(!cap.isOpened()) //检查打开是否成功
return;
ex2:
cap>>frame;
if(!frame.empty()) //判断当前 帧是否为空
{
imshow(“video”, frame);
waitKey(30);
}

上一篇:设置I帧的QP,提高I帧的质量


下一篇:线程安全try-catch异常的实现原理