23 int main(
int argc,
char* argv[])
30 double angle[2] = {100,100};
47 sf::Sprite button_tracking;
48 sf::Sprite button_reset;
50 if (!txBut.loadFromFile(
"Stock SFML/button.png")){
51 printf(
"Erreur chargement image SFML\n" );
57 if (!font.loadFromFile(
"Stock SFML/arial.ttf")){
58 printf(
"Erreur chargement police SFML\n" );
67 if (!aye.openFromFile(
"Stock SFML/Aye Sir.ogg"))
73 CvCapture* capture = cvCaptureFromCAM( 0 );
76 printf(
"ERROR: capture is NULL \n" );
82 IplImage* frame = cvQueryFrame( capture );
85 height = frame->height;
89 CvSize size = cvSize(width,height);
94 sf::RenderWindow window(sf::VideoMode(width+300, height),
"KirbyTrack");
98 IplImage* hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3);
99 IplImage* threshold = cvCreateImage(size, IPL_DEPTH_8U, 1);
128 config(&iLowH, &iHighH, &iLowS, &iHighS, &iLowV, &iHighV);
137 boucle = window.isOpen();
140 while (window.pollEvent(event))
143 if (event.type == sf::Event::Closed)
148 frame = cvQueryFrame( capture );
151 perror(
"ERROR: frame is null...");
156 traitement(frame, hsv_frame, threshold, iLowH, iHighH, iLowS, iHighS, iLowV, iHighV);
167 window.clear(sf::Color::White);
174 cvSaveImage(
"Stock SFML/temp.jpg", frame);
177 if (!txFlux.loadFromFile(
"Stock SFML/temp.jpg")){
178 printf(
"Erreur chargement image SFML\n" );
182 spFlux.setTexture(txFlux);
186 button_tracking.setTexture(txBut);
187 button_tracking.setScale(0.5,0.5);
188 button_tracking.setPosition(sf::Vector2f(width+20, 20));
190 button_reset.setTexture(txBut);
191 button_reset.setScale(0.5,0.5);
192 button_reset.setPosition(sf::Vector2f(width+20, 100));
194 if(tracking){ button_tracking.setColor(sf::Color::Green); }
195 else{ button_tracking.setColor(sf::Color::Red); }
199 text_track.setFont(font);
200 text_reset.setFont(font);
203 text_track.setString(
"Tracking Moteurs");
204 text_reset.setString(
"Reset Moteurs");
207 text_track.setCharacterSize(24);
208 text_reset.setCharacterSize(24);
211 text_track.setColor(sf::Color::Black);
212 text_reset.setColor(sf::Color::Black);
214 text_track.setPosition(sf::Vector2f(width+100, 35));
215 text_reset.setPosition(sf::Vector2f(width+100, 115));
219 sf::Vector2i PosMouse = sf::Mouse::getPosition(window);
220 if (sf::Mouse::isButtonPressed(sf::Mouse::Left)&&(PosMouse.x>640)&&(PosMouse.x<760)&&(PosMouse.y>0)&&(PosMouse.y<110)){
222 if (tracking){ tracking = 0;}
231 if (sf::Mouse::isButtonPressed(sf::Mouse::Left)&&(PosMouse.x>640)&&(PosMouse.x<760)&&(PosMouse.y>110)&&(PosMouse.y<160)){
247 window.draw(button_tracking);
248 window.draw(button_reset);
249 window.draw(text_track);
250 window.draw(text_reset);
270 if( (cvWaitKey(10) ) >= 0 )
break;
276 cvReleaseCapture( &capture );
278 cvReleaseImage(&threshold);
279 cvReleaseImage(&hsv_frame);
280 cvReleaseImage(&frame);
void config(int *LowH, int *HighH, int *LowS, int *HighS, int *LowV, int *HighV)
Fonction d'affichage du panneau de configuration de la couleur à suivre.
void Position_moy(IplImage *Binaire, int *posX, int *posY)
Effectue le baricentre des pixels d'une image binaire pour obtenir la postion de l'objet.
int ajust_pos(int pos, int ref)
permet d'éviter des positions supérieures à ref considérées comme aberrantes.
void traitement(IplImage *frame, IplImage *HSV, IplImage *Binaire, int LowH, int HighH, int LowS, int HighS, int LowV, int HighV)
Effectue une binarisation de frame en fonction des bornes HSV.
void maj_angle(int vecX, int vecY, int rayon, double *angle)
Met à jour angle selon la distance entre le centre de la caméra et la cible, avec un tolérance circul...
#define JEU
Coefficient de tolérance pour le suivi d'objet.
Bibliothèque, Headers et Documentation des fonctions.
void affichage_config(IplImage *frame, IplImage *HSV, IplImage *Binaire)
Fonction d'affichage du flux vidéo, du flux en HSV et de sa binarisation.
Fonctions utilisés dans les programmes.
int main(int argc, char *argv[])
Entrée du programme.
void controle_moteur(double *angle)
Fonction d'envoie des angles aux moteurs.
void Affichage_Tracking(IplImage *frame, int posX, int posY, int width, int height)
Fonction d'affichage des informations de suivi.