标签:视频 读取 frame cap opencv avi 播放 VideoCapture
一、介绍
视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的。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);
}
标签:视频,读取,frame,cap,opencv,avi,播放,VideoCapture 来源: https://www.cnblogs.com/djcsch2001/p/15401501.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。