读取摄像头并存盘(学习openCV课后题2.3改进)
2010-07-13 16:40
501 查看
// 第二章 课后练习题
// 题号:2.3.2
// 功能:读取摄像头中的图像数据,将是图像文件的尺寸缩小一倍
// 并将经缩小处理后的视频文件数据数据做存盘处理。
#include "cv.h"
#include "highgui.h"
/*******************************************************************/
/* 函数名 : doPyrDown() 执行图形的向下图像金字塔
/* 参数 : input 输入图像
/* filter cvPyrDown()的默认参数
/* 功能 : 将输入图像input缩小一倍,并返回指向经过缩小处理图像的指针
/*******************************************************************/
IplImage *doPyrDown(IplImage *input,int filter=CV_GAUSSIAN_5x5)
{
//确保图像宽度和高度能被2整除
assert(input->width%2==0 && input->height%2==0);
IplImage *output=cvCreateImage(cvSize(input->width/2,input->height/2),
input->depth,
input->nChannels);
assert(output!=NULL);
cvPyrDown(input,output,CV_GAUSSIAN_5x5);
return(output);
}
/****************************main()函数****************************/
void main()
{
//创建一个CvCapture对象用以读取摄像头数据
CvCapture *capture=cvCreateCameraCapture(0);
assert(capture!=NULL);
//从摄像头中取出一帧图像
IplImage *image=cvQueryFrame(capture);
assert(image!=NULL);
//获得读出图像的大小
CvSize size=cvSize(image->width/2,image->height/2);
//获得图像的播放速度
double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
// 创建一个CvVideoWriter对象用于向磁盘写入视频文件
CvVideoWriter *writer=cvCreateVideoWriter("video.avi",-1,fps,size);
//指向经过doPyrDown()变换后的图像
IplImage *change_image=cvCreateImage(size,image->depth,image->nChannels);
//创建窗口用以显示图像
cvNamedWindow("Show1");
cvNamedWindow("Show2");
//当从capture获得的图像不为空时
while ((image=cvQueryFrame(capture))!=NULL)
{
//进行图像缩放
change_image=doPyrDown(image);
//进行图像变化,将翻转的图像正常显示
cvConvertImage(change_image,change_image,CV_CVTIMG_FLIP);
//将图像和处理后的图像在窗口中显示
cvShowImage("Show1",image);
cvShowImage("Show2",change_image);
//写入文件
cvWriteFrame(writer,change_image);
char c=cvWaitKey(100);
if (c==27)
{
break;
}
}
//释放资源
cvReleaseCapture(&capture);
cvReleaseVideoWriter(&writer);
}
// 题号:2.3.2
// 功能:读取摄像头中的图像数据,将是图像文件的尺寸缩小一倍
// 并将经缩小处理后的视频文件数据数据做存盘处理。
#include "cv.h"
#include "highgui.h"
/*******************************************************************/
/* 函数名 : doPyrDown() 执行图形的向下图像金字塔
/* 参数 : input 输入图像
/* filter cvPyrDown()的默认参数
/* 功能 : 将输入图像input缩小一倍,并返回指向经过缩小处理图像的指针
/*******************************************************************/
IplImage *doPyrDown(IplImage *input,int filter=CV_GAUSSIAN_5x5)
{
//确保图像宽度和高度能被2整除
assert(input->width%2==0 && input->height%2==0);
IplImage *output=cvCreateImage(cvSize(input->width/2,input->height/2),
input->depth,
input->nChannels);
assert(output!=NULL);
cvPyrDown(input,output,CV_GAUSSIAN_5x5);
return(output);
}
/****************************main()函数****************************/
void main()
{
//创建一个CvCapture对象用以读取摄像头数据
CvCapture *capture=cvCreateCameraCapture(0);
assert(capture!=NULL);
//从摄像头中取出一帧图像
IplImage *image=cvQueryFrame(capture);
assert(image!=NULL);
//获得读出图像的大小
CvSize size=cvSize(image->width/2,image->height/2);
//获得图像的播放速度
double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
// 创建一个CvVideoWriter对象用于向磁盘写入视频文件
CvVideoWriter *writer=cvCreateVideoWriter("video.avi",-1,fps,size);
//指向经过doPyrDown()变换后的图像
IplImage *change_image=cvCreateImage(size,image->depth,image->nChannels);
//创建窗口用以显示图像
cvNamedWindow("Show1");
cvNamedWindow("Show2");
//当从capture获得的图像不为空时
while ((image=cvQueryFrame(capture))!=NULL)
{
//进行图像缩放
change_image=doPyrDown(image);
//进行图像变化,将翻转的图像正常显示
cvConvertImage(change_image,change_image,CV_CVTIMG_FLIP);
//将图像和处理后的图像在窗口中显示
cvShowImage("Show1",image);
cvShowImage("Show2",change_image);
//写入文件
cvWriteFrame(writer,change_image);
char c=cvWaitKey(100);
if (c==27)
{
break;
}
}
//释放资源
cvReleaseCapture(&capture);
cvReleaseVideoWriter(&writer);
}
相关文章推荐
- 读取视频文件存盘(学习openCV课后题2.3)
- 读取摄像头数据(学习openCV课后题 2.4)
- OpenCV学习笔记-读取摄像头
- OpenCV学习(二)读取视频文件和摄像头
- OpenCV学习——读取usb摄像头或视频并按帧保存
- 【OpenCV学习笔记】四、摄像头/视频的读取与写入
- 【OpenCV学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之cvCaptureFromCAM()的索引问题
- python opencv入门(学习笔记no.3)-从摄像头读取视频并显示
- 双目视觉学习笔记(一)--qtcreator下使用opencv读取并存储双摄像头图像
- opencv学习心得三----读取摄像头
- 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)
- 【VS2010学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之WM_TIMER消息处理函数的添加问题)
- 【OpenCV学习笔记】【函数学习】二(MFC+OpenCV2.4.7读取摄像头之CvvImage::CopyOf 的通道选择问题)
- MFC利用OpenCV读取摄像头
- 用opencv读取USB摄像头问题探究
- 我的OpenCV学习笔记(11):启动摄像头
- opencv学习心得二----读取图片
- opencv 从摄像头读取检测圆(霍夫变化)
- 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头
- OpenCV基础:读取摄像头