下面对使用opencv显示视频做一个简单的记录。当然,网上这方面的资料已经数不胜数了,我只是将其简单记录,总结一下。

  在opencv中显示视频主要有:

    (1)从本地读取视频和调用摄像头读取视频

    (2)使用C接口和使用C++接口

  一、使用opencv显示本地视频

    1、使用opencv的C++接口显示本地视频 

/*
*使用opencv的C++接口显示本地视频
*/
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp> using namespace cv; int main( int argc, char** argv )
{ VideoCapture cap("test.mp4");
if(!cap.isOpened())
{
return -1;
}
Mat frame;
while(1)
{
cap>>frame;
if(frame.empty()) break;
imshow("当前视频",frame);
if(waitKey(30) >=0)
break;
}
return 0;
}

    

    2、使用opencv的C接口显示视频的test code

/*
*使用opencv的C接口显示本地视频
*/
#include "highgui.h"
#include "cxcore.h"
#include "cv.h"
void main()
{
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateFileCapture("test.mp4");
IplImage* frame;
while() {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2", frame );
char c = cvWaitKey();
if( c == ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
}

  二、使用opencv调用摄像头

    1、使用opencv的C++接口调用摄像头

/*
*使用opencv的C++接口调用摄像头
*/ #include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp> using namespace cv; int main( int argc, char** argv )
{ VideoCapture cap();
if(!cap.isOpened())
{
return -;
}
Mat frame;
while()
{
cap>>frame;
if(frame.empty()) break;
imshow("当前视频",frame);
if(waitKey() >=)
break;
}
return ;
}

    2、使用opencv的C接口调用摄像头

/*
*使用opencv的C接口调用摄像头
*/ #include "highgui.h"
#include "cxcore.h"
#include "cv.h"
void main()
{
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateCameraCapture();
IplImage* frame;
while() {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2", frame );
char c = cvWaitKey();
if( c == ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
}

  三、总结

    1、使用C接口和使用C++接口需要包含不同的头文件

    2、C++接口用于保存视频信息的是VideoCapture,该数据接口提供两种构造函数VideoCapture(string &filename)和VideoCapture(int cameraNum)。以字符串为参数的构造函数用于显示本地视频,参数为视频路径。而以整型变量为参数的构造函数用于调用摄像头,参数代表调用的是第几个摄像头。

    3、C接口用于保存视频信息的是CvCapture结构体,并且通过函数cvCreateFileCapture(char * filename)来读取本地视频和通过cvCreateCameraCapture(int cameraNum)来调用摄像头。

    4、opencv中C和C++读取视频帧的方法也同相同,C通过cvQueryFrame函数来读取视频的下一帧并保存到IplImage结构体中,而C++接口直接通过">>"将视频的一帧读取出并保存到Mat结构体中。

使用opencv显示视频的方法的更多相关文章

  1. MFC学习篇(一):用OpenCV显示视频

    首先是一些基础的步骤,如建立MFC应用,添加按钮等,博主主要参考了下面这篇文章,其中的前32步都是用OpenCV显示图片和视频所必须的,即通用的.由于LZ原来有配置OpenCV的基础,所以配制还是比较 ...

  2. 用OpenCV显示视频时遇到问题

    刚刚接触OpenCV,运行了书上的例程,程序编译没有问题,在视频显示快要结束时遇到了下面的问题,代码在后面 #include "stdafx.h"#include <open ...

  3. EasyDarwin手机直播是如何实现的快速显示视频的方法

    前言 经常有人提到最近比较火的映客直播.花椒直播这种,是如何做到在打开手机直播中的某一个主播房间后,立即就能显示出主播视频,非常非常快,而且延时也比较小,是怎么做到的? 其实,这并不是什么高深的技术, ...

  4. OpenCV: imshow后不加waitkey无法显示视频

    OpenCV显示视频帧时出现一个问题,就是imshow之后若是不加waitkey则无法显示,找了很久也没找到原因. 只是发现也有人发现这个问题:   cvWaitKey(x) / cv::waitKe ...

  5. 【计算机视觉】OpenCV读取视频获取时间戳等信息(PS:经测试并不是时间戳,与FFMPEG时间戳不一样)

    OpenCV中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API. 1.VideoCapture类的构造函数: C++: VideoCapture::VideoCapt ...

  6. EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字

    视频处理中,往往需要在上面增加文字包括汉字英文字母数字标点等,Emgu.CV/opencv 绘图 线面文字包括中文 这篇里也有相关介绍,但是这篇里根据逐像素修改rgb值的方法效率太低 查了很多资料,基 ...

  7. qt上用opencv显示摄像头视频

    参考:http://blog.csdn.net/augusdi/article/details/8865541 代码如下: 注意,要在ui界面上放置一个“Vertical Layout”控件,调整到合 ...

  8. opencv保存视频

    利用opencv提供的方法,从摄像头获取视频,并保存为.avi格式文件. win8.1,opencv248,vs2013下测试 #include<opencv\cv.h> #include ...

  9. wpf显示视频,image控件闪屏,使用winform控件实现

    使用C#调用mingw的动态库实现视频识别软件,程序通过C++调用opencv打开视频,将图像的原始数据以rgb24的方式传递给C#端,C#通过构造图像对象给控件赋值的方式显示图片. 一开始使用wpf ...

随机推荐

  1. LENGTH() CHAR_LENGTH()

    http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_length LENGTH(str) Returns the ...

  2. embody the data item with the ability to control access to itself

    Computer Science An Overview _J. Glenn Brookshear _11th Edition Such communication needs have long b ...

  3. Visual Studio 2008破解激活升级方法

    声明:本文中涉及到的序列号及更新方法均来自互联网,请支持正版. 微软为业余爱好者.热衷者和学生提供了免费版——Express Edition (轻型.易学.易用的开发工具). 如不想支付任何费用,建议 ...

  4. 捕获JS 错误日志

    最近在做项目的过程中,发现很多JS报错没有引起重视,我就想想把JS错误捕获了,然后展示在我们一个平台上 具体实现代码: window.onerror = function(message, url,  ...

  5. Python之if语句

    计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age >= 18: ...

  6. Liunx 下使用cmake

    参考 http://blog.chinaunix.net/uid-28458801-id-3501768.html http://www.ibm.com/developerworks/cn/linux ...

  7. C++省略参数(va_list va_start va_arg va_end)的简单应用

    原文参考自:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html #include <iostream> #in ...

  8. MyBatis3资料网址

    官网: http://mybatis.github.io/mybatis-3/zh/index.html 资料: http://www.open-open.com/doc/list/112?o=d 整 ...

  9. SqlServer2008R2 如何插入多条数据

    列id 为自增列 insert into Websites2values('Google','https://www.google.cm/','USA',1),('淘宝','https://www.t ...

  10. 【转】android Graphics(四):canvas变换与操作

    android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报   目录(?)[+]   前言 ...