Witam,
muszę napisać program, który umożliwia wykrycie twarzy z pliku video. W internecie znalazłem następujący kod:

 
#include „cv.h”
#include „highgui.h”
#include <stdio.h>
CvCapture* vid = cvCreateCameraCapture(0);
cvNamedWindow("detekcja twarzy", CV_WINDOW_AUTOSIZE);
cvQueryFrame(vid);
double fps = 25;
int odstep_miedzy_klatkami = 1000 / fps;
 
// kolory do zaznaczania twarzy
static CvScalar kolory[] = {
{{19.0,69.0,139.0,0.0}},
{{63.0,133.0,205.0,0.0}},
{{96.0,164.0,244.0,0.0}},
};
 
// deklarujemy pamiec na obliczenia
CvMemStorage * storage = cvCreateMemStorage(0);
 
// tworzymy klasyfikator
// jako agrument musimy podac siezke do pliku z efektem treningu klasyfikatora
CvHaarClassifierCascade * haar = (CvHaarClassifierCascade*) cvLoad("/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml");
 
while (true)
{
IplImage* ramka = cvQueryFrame(vid);
 
if (ramka == 0)
break;
 
// czyscimy bufor
cvClearMemStorage(storage);
 
// skala
double skala = 1.5;
 
// przygotowujemy obrazy posrednie
IplImage *temp = cvCreateImage(cvSize(ramka->width, ramka->height), 8, 1);
IplImage *temp2 = cvCreateImage(cvSize(cvRound(ramka->width / skala), cvRound(ramka->height / skala)), 8, 1);
 
// zamieniamy kolory na skale szarosci
cvConvertImage(ramka, temp, CV_BGR2GRAY);
 
// zmniejszamy czarno-bialy obraz
cvResize(temp, temp2, CV_INTER_LINEAR);
 
// szukamy twarzy w danej ramce
CvSeq *wynik = cvHaarDetectObjects(temp2, haar, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(30,30));
 
// iterujemy po wszystkich wynikach
for (int i = 0; i < (wynik ? wynik->total : 0); i++)
{
// pobieramy prostokat z pozycja wskazujaca twarz
CvRect * twarz = (CvRect*) cvGetSeqElem(wynik, i);
 
 
// ustalamy dwa punkty po przekatnej prostokata
CvPoint punkt1 = cvPoint(cvRound(twarz->x * skala),cvRound(twarz->y * skala));
CvPoint punkt2 = cvPoint(cvRound((twarz->x + twarz->width)* skala),cvRound((twarz->y + twarz->height) * skala));
 
// rysujemy prostokat zaznaczajacy twarz na obrazie
cvRectangle(ramka,punkt1,punkt2,kolory[i%3],2);
 
}
 
 
cvShowImage("detekcja twarzy", ramka);
 
cvReleaseImage(&temp);
cvReleaseImage(&temp2);
 
int c = cvWaitKey(odstep_miedzy_klatkami);
if (c == 'k')
break;
 
}
 
cvReleaseHaarClassifierCascade(&haar);
cvDestroyAllWindows();
cvReleaseCapture(&vid);

niestety nie wiem czy nadaje się on do wykonania mojego zadania. Program napisany jest z wykorzystaniem biblioteki OpenCV. Czy program takiego typu najlepiej pisać w postaci konsolowej czy z wykorzystaniem interfejsu (np. Windows Form Application)? Jestem trochę początkujący w programowaniu dlatego proszę o pomoc.