Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 04/12/2012, à 00:15

lu-k41

Equivalences Visual Studio - CodeBlocks

Bonsoir,

Un ami m'a envoyé le code suivant, créé sur Visual Studio sur Windows :

// essai.cpp : définit le point d'entrée pour l'application console.

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
   // On fixe la taille de l'image à 640x480
    CvSize size = cvSize(640,480);

    // On récupère l'image donnée par la caméra par défaut
    CvCapture* capture = cvCaptureFromCAM( 0 );

   // On fixe l'intervalle HSV qui filtre les couleurs selon ce que l'on veut récupérer
    CvScalar hsv_min = cvScalar(0, 0, 0, 0);
    CvScalar hsv_max = cvScalar(255, 255, 255, 0);

    // On crée les images qui contiendront le filtre HSV et les résultats du seuillage
    IplImage*  hsv_frame    = cvCreateImage(size, IPL_DEPTH_8U, 3);
    IplImage*  thresholded  = cvCreateImage(size, IPL_DEPTH_8U, 1);

    // On utilise une boucle "infinie" pour pouvoir travailler en temps réel
    while( 1 )
    {
        // On récupère l'image donnée à l'instant t par la cam
        IplImage* frame = cvQueryFrame( capture );
       
        // On la convertit en HSV pour faciliter le filtrage des couleurs
        cvCvtColor(frame, hsv_frame, CV_BGR2HSV);
        // On filtre les couleurs non désirées
        cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded);

        // On réserve un emplacement mémoire pour les cercles de Hough
        CvMemStorage* storage = cvCreateMemStorage(0);
        // On applique un filtre Gaussien pour faciliter la détection
        cvSmooth( thresholded, thresholded, CV_GAUSSIAN, 9, 9 );
       
        // On repère les cercles de Hough et on les stock
        CvSeq* circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2,
                                        thresholded->height/4, 100, 50, 10, 400);

        for (int i = 0; i < circles->total; i++)
        {
            // On dessine un cercle identique au cercle de Hough détecté
            float* p = (float*)cvGetSeqElem( circles, i );
            printf("Ball! x=%f y=%f r=%f",p[0],p[1],p[2] );
            cvCircle( frame, cvPoint(cvRound(p[0]),cvRound(p[1])),
                                    cvRound(p[2]), CV_RGB(0,255,0), 3, 8, 0 );
        }
       
        cvShowImage( "Camera", frame );
        cvShowImage( "HSV", hsv_frame);
        cvShowImage( "Thresholded", thresholded );
        cvReleaseMemStorage(&storage);
       
        // On quitte le programme en appuyant sur Echap
        if( (cvWaitKey(10) & 255) == 27 ) break;
    }
   
    cvReleaseCapture( &capture );
    cvDestroyWindow( "mywindow" );
    return 0;

}

Il s'agit d'un programme de détection de formes pour un projet.

Mon problème est que j'utilise Code::Blocks sur Ubuntu et que le code ne marche pas dessus : la première erreur est : erreur: ‘_TCHAR’ has not been declared

Après quelques recherches j'ai lu que _TCHAR était propre à Visual Studio (ou à Windows, je n'ai sans doute pas très bien compris, n'hésitez pas à me corriger si je me trompe), comme l'était le "#include "stdafx.h"" qui était en première ligne et que j'ai supprimé.
J'en ai donc conclu que ce code devait avoir plusieurs fonctions, bibliothèques ou variables propres à Visual Studio et je n'ai pas les connaissances nécessaires pour réadapter moi-même le code pour CodeBlocks.

Pouvez-vous me donner votre avis sur la question et éventuellement :
- m'indiquer quoi remplacer pour quoi pour réadapter le code
- me donner un autre IDE dont le fonctionnement serait plus proche de Visual Studio
- me dire que je me suis complètement trompé de problème et me donner toute autre solution valable smile

D'avance merci !

Hors ligne

#2 Le 04/12/2012, à 00:44

Maisondouf

Re : Equivalences Visual Studio - CodeBlocks

Regardes du coté de MonoDevelop, c'est un IDE compatible .NET et VBvisual multiplateforme.


ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor,  OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)

Hors ligne

#3 Le 04/12/2012, à 00:45

xavier4811

Re : Equivalences Visual Studio - CodeBlocks

Manque peut être simplement stdio.h et stdlib.h pour remplacer l'entête de VS

Hors ligne

#4 Le 06/12/2012, à 00:04

lu-k41

Re : Equivalences Visual Studio - CodeBlocks

Finalement j'ai remplacé " int _tmain(int argc, _TCHAR* argv[]) " par " int main ( int argc, char** argv ) " et ça a marché, mais merci quand même pour vos réponses !

Hors ligne

Haut de page ↑