chapter2_3_4
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
IplImage* DoPyDown(IplImage* in, int fliter = IPL_GAUSSIAN_5x5)//第三个参数为卷积滤波器的类型
{
IplImage* out = cvCreateImage(
cvSize(in->width / 2, in->height / 2),
in->depth,
in->nChannels
);
cvPyrDown(in, out, IPL_GAUSSIAN_5x5);//图片缩放一半
return out;
};
int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* caputre = 0;
cvNamedWindow("AVI_EXAMPLE", CV_WINDOW_AUTOSIZE);
cvNamedWindow("AVI_AFTER");//创建窗口,默认模式为适应图片大小
if (argc == 1)
{
caputre = cvCreateCameraCapture(0);//读入摄像头视频
}
else
{
caputre = cvCreateFileCapture("m.avi");
}
assert(caputre != NULL);
IplImage* bgr_frame = cvQueryFrame(caputre);//从摄像头文件中抓取并返回一帧图像
double fps = cvGetCaptureProperty(caputre, CV_CAP_PROP_FPS);//根据摄像头文件获取其帧率信息
CvSize size = cvSize(
((int)cvGetCaptureProperty(caputre, CV_CAP_PROP_FRAME_WIDTH)) / 2,//获取视频文件的宽和高
((int)cvGetCaptureProperty(caputre, CV_CAP_PROP_FRAME_HEIGHT)) / 2
);
CvVideoWriter* writer = cvCreateVideoWriter("lgc.avi", -1, fps, size);//创建视频写入器
IplImage* outImage;
IplImage* logpolar_fram = cvCreateImage(size, IPL_DEPTH_8U, 3);
while ((bgr_frame = cvQueryFrame(caputre)) != NULL)
{
cvLogPolar(//笛卡尔坐标转为极坐标
bgr_frame,
logpolar_fram,
cvPoint2D32f(bgr_frame->width / 2, bgr_frame->height / 2),
40,
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS
);
outImage = DoPyDown(bgr_frame);//缩放后的图像输出到outImage
cvConvertImage(outImage, outImage, CV_CVTIMG_FLIP);//图像垂直翻转
cvWriteFrame(writer, outImage);//将翻转后的图像写进文件
cvShowImage("AVI_EXAMPLE", bgr_frame);//原来的视频图像
cvShowImage("AVI_AFTER", outImage);//经过缩放,翻折的图像
char c = cvWaitKey(33);
if (27 == c)
break;
}
//释放资源
cvReleaseVideoWriter(&writer);
//cvReleaseImage(&bgr_frame);
cvReleaseImage(&outImage);
cvReleaseCapture(&caputre);
cvReleaseImage(&logpolar_fram);
//销毁窗口
cvDestroyWindow("AVI_Example");
return 0;
}
chapter2_5
#include "cv.h"
#include "highgui.h"
#include "stdafx.h"
int g_pos;
void onMyTracBar(int pos)
{
g_pos = pos;
}
IplImage* DoPyDown(IplImage* in, int filter = CV_GAUSSIAN_5x5)
{
IplImage* image = cvCreateImage(
cvSize(in->width / 2, in->height / 2),
in->depth,
in->nChannels
);
cvPyrDown(in, image, filter);
return image;
}
int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* capture = cvCreateCameraCapture(0);
assert(capture != NULL);
cvNamedWindow("ex2_5");
IplImage* frame = cvQueryFrame(capture);
if (frame != NULL)
{
cvCreateTrackbar("ljk", "ex2_5", &g_pos, 8, onMyTracBar);
}
while (frame != NULL)
{
if (g_pos == 0 || g_pos == 1)
{
cvShowImage("ex2_5", frame);
}
else
{
IplImage* convert_image = DoPyDown(frame);
for (int i = 2; i < g_pos; i++)
{
convert_image = DoPyDown(convert_image);
}
//cvConvertImage(convert_image, convert_image, CV_CVTIMG_FLIP);
cvShowImage("ex2_5", convert_image);
cvReleaseImage(&convert_image);
}
frame = cvQueryFrame(capture);
char c = cvWaitKey(33);
if (c == 27)
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("ex2_5");
return 0;
}