22 int main(
int argc,
char* argv[])
28 float scale_x, scale_y;
35 tab_face[i] = (
face*)malloc(
sizeof(
face));
43 if (!txLink.loadFromFile(
"Stock SFML/link.png")){
44 printf(
"Erreur chargement image SFML\n" );
48 sf::Vector2u vec_link = txLink.getSize();
54 if (!txGanon.loadFromFile(
"Stock SFML/ganon.png")){
55 printf(
"Erreur chargement image SFML\n" );
59 sf::Vector2u vec_ganon = txGanon.getSize();
70 if (!aile.openFromFile(
"Stock SFML/aile.ogg"))
76 if (!hey.openFromFile(
"Stock SFML/hey_listen.ogg"))
79 if (!watchout.openFromFile(
"Stock SFML/watchout.ogg"))
83 CvCapture* capture = cvCaptureFromCAM( 1);
86 printf(
"ERROR: capture is NULL \n" );
92 IplImage* frame = cvQueryFrame( capture );
95 height = frame->height;
104 sf::RenderWindow window(sf::VideoMode(width, height),
"KirbyTrack");
110 boucle = window.isOpen();
113 while (window.pollEvent(event))
116 if (event.type == sf::Event::Closed)
121 frame = cvQueryFrame( capture );
124 perror(
"ERROR: frame is null...");
134 window.clear(sf::Color::White);
141 cvSaveImage(
"Stock SFML/temp.jpg", frame);
144 if (!txFlux.loadFromFile(
"Stock SFML/temp.jpg")){
145 printf(
"Erreur chargement image SFML\n" );
149 spFlux.setTexture(txFlux);
152 Link.setTexture(txLink);
153 Link.setOrigin(sf::Vector2f(vec_link.x/2,vec_link.y/2));
154 Link.setPosition(sf::Vector2f(tab_face[0]->point.x, tab_face[0]->point.y));
155 scale_x = tab_face[0]->largeur / (1.0*vec_link.x);
156 scale_y = tab_face[0]->largeur / (1.0*vec_link.y);
158 Link.setScale(sf::Vector2f(scale_x, scale_y));
160 Ganon.setTexture(txGanon);
161 Ganon.setOrigin(sf::Vector2f(vec_ganon.x/2,vec_ganon.y/2));
162 Ganon.setPosition(sf::Vector2f(tab_face[1]->point.x, tab_face[1]->point.y));
163 scale_x = tab_face[1]->largeur / (1.0*vec_ganon.x);
164 scale_y = tab_face[1]->largeur / (1.0*vec_ganon.y);
165 Ganon.setScale(sf::Vector2f(scale_x, scale_y));
176 if(tab_face[i]->largeur==0){
181 if((tab_face[1]->largeur>0) && (watchout.getStatus()==sf::Sound::Stopped) && rdy[1]){
185 if((tab_face[0]->largeur>0) && (hey.getStatus()==sf::Sound::Stopped) && rdy[0]){
190 get_color(frame, tab_face[0],BGR);
198 cvReleaseCapture( &capture );
200 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.