forked from Vorago/iwb
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcapture.cpp
More file actions
67 lines (54 loc) · 1.57 KB
/
capture.cpp
File metadata and controls
67 lines (54 loc) · 1.57 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
/*
* File: capture.cpp
* Author: vorago
*
* Created on December 23, 2010, 1:13 PM
*/
#include "include/capture.hpp"
#include "include/analysis.hpp"
#include <stdio.h>
#include <time.h>
namespace iwb {
CvCapture* Capture::getCapture() {
return capture;
}
IplImage* Capture::getPreviousFrame() {
return previousFrame;
}
void Capture::setPreviousFrame(IplImage* image) {
previousFrame = image;
}
Capture::Capture(const char* filepath) :
previousFrame(0) {
capture = cvCaptureFromAVI(filepath);
}
Capture::Capture(int num) :
previousFrame(0) {
capture = cvCaptureFromCAM(num);
}
Capture::~Capture() {
cvReleaseCapture(&capture);
}
void Capture::saveFrame(const char* filepath, IplImage* image) {
cvSaveImage(filepath, image);
}
void Capture::showDiff() {
const char* winDiff = "winDiff";
const char* winFrame = "winFrame";
cvNamedWindow(winDiff, CV_WINDOW_AUTOSIZE);
cvNamedWindow(winFrame, CV_WINDOW_AUTOSIZE);
for (;;) {
IplImage* currentFrame = cvQueryFrame(capture);
if (previousFrame == NULL) {
previousFrame = cvCloneImage(currentFrame);
continue;
}
IplImage* diff = Analysis::getDiff(previousFrame, currentFrame);
cvShowImage(winFrame, currentFrame);
previousFrame = cvCloneImage(currentFrame);
cvShowImage(winDiff, diff);
cvWaitKey(40);
cvReleaseImage(&diff);
}
}
}