#include <stdio.h>
#include <highgui.h>
#include <cv.h>
int main(int argc, char** argv) {
bool isStop = false;
CvCapture *capture = NULL;
capture = cvCreateCameraCapture(0);
if(capture == NULL){
printf("capture device not found!!");
return -1;
}
IplImage *img = NULL;
img = cvQueryFrame(capture);
const int w = img->width;
const int h = img->height;
IplImage *imgBg = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 1);
IplImage *imgGray = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 1);
IplImage *imgDiff = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 1);
char winNameCapture[] = "Capture";
char winNameDiff[] = "Difference";
char winNameBg[] = "Background";
cvNamedWindow(winNameCapture, CV_WINDOW_AUTOSIZE);
cvNamedWindow(winNameDiff, CV_WINDOW_AUTOSIZE);
cvNamedWindow(winNameBg, CV_WINDOW_AUTOSIZE);
img = cvQueryFrame(capture);
cvCvtColor(img, imgBg, CV_BGR2GRAY);
int waitKey;
while (1) {
if(!isStop){
img = cvQueryFrame(capture);
cvCvtColor(img, imgGray,CV_BGR2GRAY);
cvAbsDiff(imgGray, imgBg, imgDiff);
cvShowImage(winNameCapture, img);
cvShowImage(winNameDiff, imgDiff);
cvShowImage(winNameBg, imgBg);
}
waitKey = cvWaitKey(33);
if(waitKey == 'q') break;
if(waitKey == 'b'){
img = cvQueryFrame(capture);
cvCvtColor(img, imgBg, CV_BGR2GRAY);
}
if(waitKey == ' '){
isStop = !isStop;
if(isStop) printf("stop\n");
else printf("start\n");
}
}
cvReleaseCapture(&capture);
cvDestroyWindow(winNameCapture);
cvDestroyWindow(winNameDiff);
cvDestroyWindow(winNameBg);
return 0;
}