下面对使用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结构体中。

最新文章

  1. 设置DataGridView的某个单元格为ComboBox
  2. Fedora 23 忘记root密码
  3. iptables4张表5条链
  4. C++用法的学习心得(要求包含示例,并反映出利用网络获取帮助的过程)
  5. svn查看代码作者的命令
  6. IE 的resize事件问题
  7. 周赛-Colored Sticks 分类: 比赛 2015-08-02 09:33 7人阅读 评论(0) 收藏
  8. C++学习笔记6——类的多态
  9. 基于Office 365 无代码工作流分析-需求基本分析!
  10. JAVA 平时作业二
  11. Javaweb拦截器
  12. Echo()、print()、print_r()区别
  13. WebStorm Chinese Language Pack(中文语言包
  14. bzoj3437 小P的牧场(斜率优化dp)
  15. java学习之动手实验
  16. Kafka、 RabbitMQ、Redis、 ZeroMQ、 ActiveMQ、 Kafka/Jafka 对比
  17. Scala 学习笔记(2)之类和对象
  18. db 文件 查看 打开 工具 db 中文 版 navicat 中文
  19. python numpy 学习
  20. c++中STL中的next_permutation函数基本用法

热门文章

  1. Apache Kafka源码分析 - KafkaApis
  2. Python之if语句
  3. pro10
  4. LMAO?
  5. Mongo命令行中执行CRUD
  6. 为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
  7. Qt配置信息设置(QSettings在不同平台下的使用路径)
  8. Windows 一键安装OpenSSL
  9. express 查看版本号
  10. OO之美2