-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2.5.cpp
More file actions
74 lines (48 loc) · 2.29 KB
/
2.5.cpp
File metadata and controls
74 lines (48 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Part2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
#include <cv.h>
#include <highgui.h>
int g_slider_position = 0;
CvCapture* g_capture = NULL;
void onTrackbarSlide(int pos) {
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);
}
int main(int argc, char* argv[])
{
CvCapture* capture = 0;
cvNamedWindow("TrackBar", CV_WINDOW_AUTOSIZE);
capture = cvCreateFileCapture(argv[1]);
if (!capture) {
return -1;
}
IplImage* bgr_frame = cvQueryFrame(capture);
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
// упражнение 2.5 - добавление слайдера
int frames = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
if (0 != frames) {
cvCreateTrackbar("Position", "TrackBar", &g_slider_position, frames, onTrackbarSlide);
}
CvSize size = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));
CvVideoWriter* writer = cvCreateVideoWriter(argv[2], CV_FOURCC('M', 'J', 'P', 'G'), fps, size);
IplImage* logpolar_frame = cvCreateImage(size, IPL_DEPTH_8U, 3);
while ((bgr_frame = cvQueryFrame(capture)) != NULL) {
cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);
IplImage* logpolar_frame_wr = cvCreateImage(cvSize(logpolar_frame->width / 2, logpolar_frame->height / 2), logpolar_frame->depth, logpolar_frame->nChannels);
cvPyrDown(logpolar_frame, logpolar_frame_wr); // сжатие изображения в 2 раза
cvWriteFrame(writer, logpolar_frame_wr);
cvNamedWindow("DisplayPicture", CV_WINDOW_AUTOSIZE);
cvShowImage( "DisplayPicture", logpolar_frame_wr);
cvWaitKey(0);
cvReleaseImage(&logpolar_frame_wr);
cvDestroyWindow( "DisplayPicture" );
// упражнение 2.5 - изменение размытия
IplImage* result = new IplImage();
cvPyrDown(logpolar_frame_wr, result, g_slider_position);
}
cvReleaseImage(&logpolar_frame);
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&capture);
getchar();
return(0);
}