I want to display system time in windows and recorded video but I dont know why there is question mark behind the year. Anybody know why?
include <c:\users\am\desktop\project\opencv\build\include\opencv2\objdetect\objdetect.hpp>
include <c:\users\am\desktop\project\opencv\build\include\opencv2\highgui\highgui.hpp>
include <c:\users\am\desktop\project\opencv\build\include\opencv2\imgproc\imgproc.hpp>
include <c:\users\am\desktop\project\opencv\build\include\opencv\cv.h>
include <c:\users\am\desktop\project\opencv\build\include\opencv2\core\core.hpp>
include <c:\users\am\desktop\project\opencv\build\include\opencv2\videostab\optical_flow.hpp>
include <c:\users\am\desktop\project\opencv\build\include\opencv2\videostab\videostab.hpp>
include <iostream>
include <stdio.h>
include <time.h>
using namespace std; using namespace cv;
int numFaces; int numEyes;
/** Function Headers */ void detectAndDisplay( Mat frame ); void videoRecord (Mat frame);
/** Global variables */ String face_cascade_name = "haarcascade_frontalface_alt.xml"; String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; string window_name = "Capture - Face detection"; RNG rng(12345);
VideoCapture capture; VideoWriter record;
time_t now;
/* @function main */ int main( int argc, const char* argv ) {
Mat frame;
//-- 1. Load the cascades
if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; }; if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
//-- 2. Read the video stream capture.open(0);// = cvCaptureFromCAM( -1 );
if( capture.isOpened() ) { int width = capture.get(CV_CAP_PROP_FRAME_WIDTH); int height = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
capture >> frame;
record.open("C:/Users/AM/Google Drive/Intruder.avi", CV_FOURCC('D','I','V','X'), 9, cvSize(width, height), true);
while( true )
{
//frame = cvQueryFrame( capture );
capture >> frame;
//-- 3. Apply the classifier to the frame if( !frame.empty() ) { detectAndDisplay( frame ); if (numEyes == 2) { videoRecord(frame); //numEyes = 0; } } else { printf(" --(!) No captured frame -- Break!"); break; }
//pause for 33ms
if (waitKey(33) == 27)
break;
}
} return 0; }
/** @function detectAndDisplay */ void detectAndDisplay( Mat frame ) { std::vector<rect> faces; Mat frame_gray;
//time (&rawtime); //timeinfo = localtime (&rawtime); string str; now = time(NULL); str = ctime(&now);
cvtColor( frame, frame_gray, CV_BGR2GRAY ); equalizeHist( frame_gray, frame_gray );
//-- Detect faces face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
putText(frame, str, cvPoint(5, 25), CV_FONT_HERSHEY_SIMPLEX, 0.5, CV_RGB(0, 0, 255), 2, 8, FALSE);
for( int i = 0; i < faces.size(); i++ ) { //draw face Point center( faces[i].x + faces[i].width0.5, faces[i].y + faces[i].height0.5 ); ellipse( frame, center, Size( faces[i].width0.5, faces[i].height0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
//get region of interest
Mat faceROI = frame_gray( faces[i] );
std::vector<Rect> eyes;
//-- In each face, detect eyes
eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( int j = 0; j < eyes.size(); j++ )
{
//draw eyes
Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );
int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );
circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
}
cout<<"numEyes =" << numEyes;
//save number of faces/eyes detected
numFaces = faces.size();
numEyes = eyes.size();
} //-- Show what you got imshow( window_name, frame );
}
void videoRecord (Mat frame) { time(&now); //time (&rawtime); //timeinfo = localtime (&rawtime);
putText(frame, ctime(&now), cvPoint(5, 25), CV_FONT_HERSHEY_SIMPLEX, 1.0, CV_RGB(0, 0, 255), 1, 8, FALSE); record << frame;
}