21 int main(
int argc,
char* argv[])
27 float scale_x, scale_y;
34 tab_face[i] = (
face*)malloc(
sizeof(
face));
42 if (!txLink.loadFromFile(
"Stock SFML/link.png")){
43 printf(
"Erreur chargement image SFML\n" );
47 sf::Vector2u vec_link = txLink.getSize();
53 if (!txGanon.loadFromFile(
"Stock SFML/ganon.png")){
54 printf(
"Erreur chargement image SFML\n" );
58 sf::Vector2u vec_ganon = txGanon.getSize();
69 if (!aile.openFromFile(
"Stock SFML/aile.ogg"))
75 if (!hey.openFromFile(
"Stock SFML/hey_listen.ogg"))
78 if (!watchout.openFromFile(
"Stock SFML/watchout.ogg"))
82 CvCapture* capture = cvCaptureFromCAM( 0 );
85 printf(
"ERROR: capture is NULL \n" );
91 IplImage* frame = cvQueryFrame( capture );
94 height = frame->height;
103 sf::RenderWindow window(sf::VideoMode(width, height),
"KirbyTrack");
109 boucle = window.isOpen();
112 while (window.pollEvent(event))
115 if (event.type == sf::Event::Closed)
120 frame = cvQueryFrame( capture );
123 perror(
"ERROR: frame is null...");
133 window.clear(sf::Color::White);
140 cvSaveImage(
"Stock SFML/temp.jpg", frame);
143 if (!txFlux.loadFromFile(
"Stock SFML/temp.jpg")){
144 printf(
"Erreur chargement image SFML\n" );
148 spFlux.setTexture(txFlux);
151 Link.setTexture(txLink);
152 Link.setOrigin(sf::Vector2f(vec_link.x/2,vec_link.y/2));
153 Link.setPosition(sf::Vector2f(tab_face[0]->point.x, tab_face[0]->point.y));
154 scale_x = tab_face[0]->largeur / (1.0*vec_link.x);
155 scale_y = tab_face[0]->largeur / (1.0*vec_link.y);
157 Link.setScale(sf::Vector2f(scale_x, scale_y));
159 Ganon.setTexture(txGanon);
160 Ganon.setOrigin(sf::Vector2f(vec_ganon.x/2,vec_ganon.y/2));
161 Ganon.setPosition(sf::Vector2f(tab_face[1]->point.x, tab_face[1]->point.y));
162 scale_x = tab_face[1]->largeur / (1.0*vec_ganon.x);
163 scale_y = tab_face[1]->largeur / (1.0*vec_ganon.y);
164 Ganon.setScale(sf::Vector2f(scale_x, scale_y));
175 if(tab_face[i]->largeur==0){
180 if((tab_face[1]->largeur>0) && (watchout.getStatus()==sf::Sound::Stopped) && rdy[1]){
184 if((tab_face[0]->largeur>0) && (hey.getStatus()==sf::Sound::Stopped) && rdy[0]){
189 get_color(frame, tab_face[0],BGR);
190 printf(
"B = %d, G = %d, R = %d\n",BGR[0],BGR[1],BGR[2]);
197 cvReleaseCapture( &capture );
199 cvReleaseImage(&frame);
void detect_and_draw(IplImage *img, CvHaarClassifierCascade *cascade, face **tab_face)
Détecte et renvoie un rectangle pour chaque visage sur l'image.
CvHaarClassifierCascade * init_cascade()
Charge les fichiers cascades pour la reconnaissance faciale.
Bibliothèque, Headers et Documentation des fonctions.
#define MAX_FACE
Nombre maximum de faces traitées.
int main(int argc, char *argv[])
Entrée du programme.
Contient les informations sur chaque face détectée : positions, largeur.