对视频进行读写,可使用OpenCV提供的CvCapture和CvVideoWriter。
在Windows平台下,OpenCV以前提供的读写功能采用VFW,效率低下且有些格式支持不好。而 OpenCV 2.0 内置了videoInput Library,可以自动在VFW和DirectShow间切换。videoInput是老外写的功能强大的开源视频处理库。
0. Windows SDK
微软每推出一个重要的windows版本,一般都会同时推出一个SDK(Software Development Kit)。SDK包含了开发该windows版本所需的windows函数和常数定义、API函数说明文档、相关工具和示例。
安装Windows 7 SDK,下载地址:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
1.新建项目
启动Code::Blocks,选择File->New->Project, 项目类型选择:Console Application,项目名为:MyRecorder,其他按默认选择。
2. 代码
打开main.cpp文件,输入以下代码:
#include <iostream>
#include <videoInput.h>
#include <opencv2/opencv.hpp>
using namespace std;
int main(int argc, char** argv)
{
int width = 640;
int height = 400;
char* name = "test.avi";
name = argc == 2 ? argv[1] : name;
if(argc == 3)
{
width = atoi(argv[1]);
height = atoi(argv[1]);
}
else if(argc == 4)
{
name = argv[1];
width = atoi(argv[2]);
height = atoi(argv[3]);
}
IplImage* pImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
videoInput video;
video.setupDevice(0, width, height);
video.showSettingsWindow(0);
CvVideoWriter* writer = 0;
writer = cvCreateAVIWriter(name, -1, 25, cvSize(width, height), 1);
cvNamedWindow("video", 1);
pImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
while(1)
{
if(video.isFrameNew(0))
{
video.getPixels(0, (unsigned char*)pImg->imageData, false, true);
cvWriteFrame(writer, pImg);
cvShowImage("video", pImg);
if(cvWaitKey(1) == 27)
break;
}
}
cvReleaseVideoWriter(&writer);
cvReleaseImage(&pImg);
cvDestroyAllWindows();
return 0;
}
3. 设置
打开Project-〉Build Options选项卡
选择Search directories,在Compiler里Add进以下目录:
C:\OpenCV2.2\include
C:\OpenCV2.2\3rdparty\include
在Linker里Add进以下目录:
C:\OpenCV2.2\lib
C:\OpenCV2.2\3rdparty\lib
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
选择Linker settings,添加以下文件:
C:\OpenCV2.2\lib 此目录下的所有文件
C:\OpenCV2.2\3rdparty\lib 此目录下的所有文件
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib 此目录下所有ole开头的文件
4. 编译
点击Build->Build编译项目。
5. 运行
点击Build-〉Run
会出现三个窗口:
视频编码选择:
根据系统安装和OpenCV支持的编码格式,选择合适的格式来生成avi文件,我测试可以用的是Microsoft Video 1格式,点确定后即可看到视频窗口。
视频属性设置窗口:
可以设置视频的一些效果。
在项目的根目录下会产生一个avi文件,可以直接用播放器来播放。
分享到:
相关推荐
基于标记的AR的OpenCV实现:动态视频输入
Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library 是一本由浅入深介绍Opencv3 计算机视觉库使用的专业书籍。书中详细介绍了opencv3安装及各个模块的使用,此书在旧版基本上做了大量修改,以适应...
OpenCV算法精解:基于Python与C(优秀教材,值得一看),需要请自行下载
Duanxx的OpenCV学习:视频操作
毕业设计:基于OpenCV的细胞计数算法设计 毕业设计:基于OpenCV的细胞计数算法设计 毕业设计:基于OpenCV的细胞计数算法设计 毕业设计:基于OpenCV的细胞计数算法设计 毕业设计:基于OpenCV的细胞计数算法设计 毕业...
Java Opencv系列:(配套代码下载)Java Opencv系列:(配套代码下载)
一、下载CMake和OpenCV库 1.CMake下载地址:https://cmake.org/download/,下载windows版本即可,建议安装v3.16及以上版本 2.下载opencv及opencv-contrib库: https://github.com/opencv/opencv/releases ...
刘瑞祯, 于仕琪编著的《OpenCV教程:基础篇》的实例源代码,很全,很好用,相信给大家很大帮助
毕业设计:基于OpenCV&外部特征的个体鱼识别算法研究 毕业设计:基于OpenCV&外部特征的个体鱼识别算法研究 毕业设计:基于OpenCV&外部特征的个体鱼识别算法研究 毕业设计:基于OpenCV&外部特征的个体鱼识别算法研究 ...
详细说明请见...实现的功能 1、打开本地视频进行读取、播放、暂停、停止控制 2、图片打开功能分为两种:可使用“打开图片”按钮打开本地图片,或者点击comobox里面设定的图片列表选择并显示图片
关于Opencv的项目实例设计,帮助进阶者继续学习opencv图像处理。
计算机视觉,OpenCV算法精讲
之前上传的只能在armeabi上使用,这次补充了x86等架构的兼容。最新OpenCV官方SDK里面缺少的一个库,但是这个库非常重要。不然会影响到免安装OpenCV Manager
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言...
《OpenCV算法精解:基于Python与C++》是以OpenCV 为工具学习数字图像处理的入门书。内容由浅入深,每一章都采用阐述基本概念、数学原理、C++ 实现、Python 实现相结合的方法,使初学者循序渐进地掌握数字图像处理...
在vs2010中建立MFC对话框,通过opencv实现图像的采集、保存、播放本地视频、通过滑块控制播放进度。
基于OpenCV的视频道路车道检测源码 基于OpenCV的视频道路车道检测源码 基于OpenCV的视频道路车道检测源码 基于OpenCV的视频道路车道检测源码 基于OpenCV的视频道路车道检测源码 基于OpenCV的视频道路车道...
OpenCV实例精解 ,普拉蒂克·乔希
C++基于opencv与ffmpeg的视频编辑器源码,C++开发,QT界面,基于opencv与ffmpeg的视频编辑器。+配置文件,C++基于opencv与ffmpeg的视频编辑器源码,C++开发,QT界面,基于opencv与ffmpeg的视频编辑器。+配置文件C++...