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".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 04/12/2012, à 01: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, à 01: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, à 01: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, à 01: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 ↑