IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

[Débutante] la fonction "Inpainting"


Sujet :

OpenCV

  1. #1
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut [Débutante] la fonction "Inpainting"
    Bonjour,

    J'aimerais bien utiliser la fonction "Inpainting" de opencv sur l'image img1 que je lis comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #include<opencv\cv.h>
    #include<opencv\highgui.h>
     
    //using namespace cv;
     
    int main()
    {
    IplImage* img1=cvLoadImage("d:\essai.tif");
    cvShowImage("myfirstwindow",img1);
     
    cvWaitKey(0);
     
     
    return (0);
    }
    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Mat img,img0;
    Mat inpainted;
    inpaint(img0,img1,inpainted,2,CV_INPAINT_NS);
    Malheureusement ça n'a pas marché

    pouvez-vous m'aider s'il vous plait

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Même remarque que celle faite dans cette discussion, tu mélanges les interfaces C et C++ d'OpenCV.

  3. #3
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Merci pour votre aide, j'ai réécrit mon programme mais la fonction cvInpait n'est pas reconnue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include<opencv\cv.h>
    #include<opencv\highgui.h>
    #include<opencv\cvwimage.h>
    using namespace cv;
     
    int main()
    {
     
    IplImage* img1=cvLoadImage("d:\essai2.tif");
    cvShowImage("myfirstwindow",img1);
     
     
    //-----------------------------RGB2Gray--------------------------------
     
    IplImage *img1_gray = cvCreateImage(cvGetSize(img1),IPL_DEPTH_8U,1);
    cvCvtColor(img1,img1_gray,CV_RGB2GRAY);
    cvShowImage("mysecondwindow",img1_gray);
     
    //---------------------------Thresholding-------------------------------
     
    IplImage* img1_bw = cvCreateImage(cvGetSize(img1_gray),IPL_DEPTH_8U,1);
    cvThreshold(img1_gray, img1_bw, 254,255,CV_THRESH_BINARY);
    cvShowImage("mythirdwindow",img1_bw);
    IplImage *img1_heq = cvCreateImage(cvGetSize(img1),IPL_DEPTH_8U,1);
     
    //------------------------Histogram Equalization------------------------
     
    cvInpaint(img1, img1_bw, img1_inpaited, 3,CV_INPAINT_TELEA);
    J'obtiens ces deux erreurs:

    1 IntelliSense*: identificateur "cvInpaint" non défini
    2 IntelliSense*: identificateur "CV_INPAINT_TELEA" non défini
    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    using namespace cv; C++, tout le reste du C

    Concernant l'erreur, tu as simplement oublié l'include qui le défini, situé dans le module photo. Sans oublier de le linker et rajouter la dll/so correspondante.

  5. #5
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut


    Merci pour ta réponse Winjerome

    Le programme ci-dessous génère une exception et je n'arrive pas à voir le résultat, je n'ai pas pu comprendre à quoi elle est due
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include<opencv\cv.h>
    #include<opencv\highgui.h>
    #include<opencv2\photo\photo.hpp>
     
    int main()
    {
     
    IplImage* img1=cvLoadImage("d:\fruits_test.tif");
    cvShowImage("myfirstwindow",img1);
     
    //-----------------------------RGB2Gray--------------------------------
     
    IplImage *img1_gray = cvCreateImage(cvGetSize(img1),IPL_DEPTH_8U,1);
    cvCvtColor(img1,img1_gray,CV_RGB2GRAY);
    cvShowImage("mysecondwindow",img1_gray);
     
    //---------------------------Thresholding-------------------------------
     
    IplImage* img1_bw = cvCreateImage(cvGetSize(img1_gray),IPL_DEPTH_8U,1);
    cvThreshold(img1_gray, img1_bw, 254,255,CV_THRESH_BINARY);
    cvShowImage("mythirdwindow",img1_bw);
     
    //---------------------------Inpaiting--------------------------------------
     
    cvInpaint(img1, img1_bw, img1_inpaited,3,CV_INPAINT_TELEA);
    cvShowImage("inpaited",img1_inpaited);
     
    cvWaitKey(0);
     
     
    return (0);
    }
    Avez-vous une idée de l'emplacement de l'erreur

  6. #6
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Re-bonjour,

    Apres avoir passé des heures à contempler mon code j'ai fini par trouvé l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IplImage *img1_inp = cvCreateImage(cvGetSize(img1),IPL_DEPTH_8U,3);
    Merci beaucoup

  7. #7
    Invité
    Invité(e)
    Par défaut
    Attention à bien doubler ce caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IplImage* img1=cvLoadImage("d:\\fruits_test.tif");
    Ainsi qu'à libérer la mémoire des images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvReleaseImage( &mon_image );

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo