3.使用例2-10中的视频捕捉和存储方法,结合例2-5中的doPyrDown()创建一个程序,使其从摄像机读入视频数据并将缩放变换后的彩色图像存入磁盘。

例2-10中所用的方法虽然能正常运行,但却不能生成存储的视频,百思不得其解。遂参考了一篇博文:blog.csdn.net/jacke121/article/details/54607863

利用文中的方法实现了上述功能。代码如下

 /*ch2_lx2_3.cpp  2017/11/29
本程序是learning opencv这本书的课后习题练习
欢迎提出问题一起讨论*/
#include "cv.h"
#include "highgui.h"
using namespace std;
IplImage* doPyrDown(
IplImage* in,
int filter = IPL_GAUSSIAN_5x5)
{
assert(in->width% == && in->height% == ); IplImage* out = cvCreateImage(
cvSize( in->width/, in->height/ ),
in->depth,
in->nChannels
);
cvPyrDown(in,out);
return(out);
};
int main( int argc, char** argv )
{
cvNamedWindow( "Example2",CV_WINDOW_AUTOSIZE);
cvNamedWindow( "Example3",CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateFileCapture(argv[]);
IplImage* frame;
IplImage* img;
CvVideoWriter *video=NULL;
int i=;
int n;
while()
{
frame = cvQueryFrame( capture );
img = doPyrDown( frame );
if( !frame ) break; if(i==)
video=cvCreateVideoWriter("camera.avi",CV_FOURCC('X', 'V', 'I', 'D'),,cvSize(img->width,img->height));
if(video)
{
cout<<"video writer has created!"<<endl;
}
n=cvWriteFrame(video,img);
printf("cvWriteFrame %d\n", n);
i++;
cout<<n<<endl;
cvShowImage( "Example2", frame );
cvShowImage( "Example3", img );
char c = cvWaitKey();
if( c == ) break; }
cvReleaseImage(&frame);
cvReleaseImage(&img);
cvReleaseVideoWriter(&video);
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
return ;
}

OpenCV学习笔记之课后习题练习2-3的更多相关文章

  1. OpenCV学习笔记之课后习题练习3-5

    OpenCV学习笔记之课后习题练习2-5 练习使用感兴趣区域(ROI).创建一个210*210的单通道图像并将其归0.在图像中使用ROI和cvSet()建立一个增长如金字塔状的数组. 参考博文:www ...

  2. OpenCV学习笔记之课后习题练习2-5

    5.对练习4中的代码进行修改,参考例2-3,给程序加入滚动条,使得用户可以动态调节缩放比例,缩放比例的取值为2-8之间.可以跳过写入磁盘操作,但是必须将变换结果显示在窗口中. 参考博文:blog.cs ...

  3. OpenCV学习笔记之课后习题练习3-4

    练习:创建一个大小为100*100的三通道RGB图像.将它的元素全部置0.使用指针算法以(20,5)与(40,20)为顶点绘制一个绿色平面. 参考博文:blog.csdn.net/qq_2077736 ...

  4. OpenCV学习笔记之课后习题练习3-3

    3.3 创建一个100*100的拥有三个通道的二维字节类型矩阵,将其元素全部置0.通过cvPtr2D函数将指针指向中间通道(绿色),以(20,5)和(40,20)为顶点间画一个绿色的长方形. cvPt ...

  5. OpenCV学习笔记之课后习题练习4-1

    第四章课后练习1 1.本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助.a.创建一个程序实现以下功能:(1)从视频文件中读 ...

  6. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  7. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  8. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  9. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

随机推荐

  1. PostgreSQL逻辑复制之slony篇

    Slony是PostgreSQL领域中最广泛的复制解决方案之一.它不仅是最古老的复制实现之一,它也是一个拥有最广泛的外部工具支持的工具,比如pgAdmin3.多年来,Slony是在PostgreSQL ...

  2. PHP字符串offset取值特性

    在PHP的代码基础上,PHP字符串offset取值特性,可以拿来利用,给PHP应用程序带来安全风险. 在PHP中,可以像操作数组一样操作字符串,字符串中的字符可以用类似数组结构中的方括号包含对应的数字 ...

  3. SpringBoot(三)-- 整合FreeMarker模板

    1.pom依赖 <!-- 引入freeMarker的依赖包. --> <dependency> <groupId>org.springframework.boot& ...

  4. Oracle查询锁表和解锁

    1.查询是否锁表 SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machi ...

  5. python--列表内建函数的方法

    List Method Operation list.append(obj)     #向列表中添加一个对象obj list.count(obj)      #返回一个对象obj 在列表中出现的次数 ...

  6. React Native(十一)——按钮重复点击事件的处理

    最初开始做后台管理系统的时候,就曾遇到过这样一种场景:"快速点击确认按钮,就会对此触发确认事件,导致多次请求数据库":于是最终我们得当的通过处理那个确认button,解决了上述问题 ...

  7. spring boot配置文件application.propertis

    转自http://www.qiyadeng.com/post/spring-boot-application-properties 本文记录Spring Boot application.proper ...

  8. U盘安装centos7:不能载入到安装界面

    在用U盘安装centos7时,我们需要修改镜像位置: 选择第一项:Install CentOS 7 ,按 e(也有可能是tab键)键进入编辑界面. 将 vmlinuz initrd=initrd.im ...

  9. Kindeditor问题

    1.初始的时候,拿到切图,kindeditor不知道为什么就是显示不出来,只出来个文本框一样的东西 原因:样式未加载,这个是因为美工那边样式重调了,而且新项目并没有将整个插件拷贝过来,而只是拿了kin ...

  10. 【Spring源码分析系列】搭建Spring实现容器的基本实现

    前言 bean是Spring中最核心的东西,因为Spring就像一个大水桶,而bean就像是容器中的水,先新建一个小例子来看一下: 一.使用eclipse构建项目,项目结构如下 二.类文件内容 < ...