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 :

Binarisasion d'une image


Sujet :

OpenCV

  1. #1
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut Binarisasion d'une image
    Bonjour,

    je souhaite binariser une image couleurs l’étape 1 du programme est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <cv.h>
    #include <highgui.h>
    iplImage *img,imgB;
    void main()
    {
        img=cvloadImage("test.jpg");
        cv::cvtColor(img,imgB,CV_RGB2GRAY);
    }
    a l'excution deux messages d'erreur s'affiche

    Erreur 1 error LNK2019: symbole externe non résolu "void __cdecl cv::cvtColor(class cv::Mat const &,class cv::Mat &,int,int)" (?cvtColor@cv@@YAXABVMat@1@AAV21@HH@Z) référencé dans la fonction "void __cdecl Binaire(void)" (?Binaire@@YAXXZ) C:\Users\Hamza\documents\visual studio 2010\Projects\OpenCV\OpenCV\Filtre_Localisation.obj OpenCV
    Erreur 2 error LNK1120: 1 externes non résolus C:\Users\Hamza\documents\visual studio 2010\Projects\OpenCV\Debug\OpenCV.exe OpenCV
    vraiment je ne comprend pas les messages d'erreur, j'ai déjà consulter la documentation

    La première étape consiste a rendre l'image en niveau de gris puis effectuer un filtre (médian) pour enfin la binariser.

    Merci.

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Salut !

    Il s'agit d'une procédure C contenue dans imgproc_c.h. En enlevant le namespace "cv::" devant l'appel ça devrait aller mieux je présume.

  3. #3
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonsoir,

    j'ai déjà tenter sans le namespace mais sa ne marche pas non plus.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Déjà il faudrait savoir si tu travailles en C ou en C++

    Le code tel quel que tu nous montres n'a aucune chance d'arriver à l'étape d'édition des liens (qui pose problème selon ton erreur).
    • Il manque un * devant imgB
    • IplImage avec un I majuscule au début.
    • cvLoadImage avec un L majuscule.
    • cv::cvtColor de l'interface C++ n'acceptera jamais un IplImage du C.

    Citation Envoyé par TheGzD Voir le message
    Il s'agit d'une procédure C contenue dans imgproc_c.h. En enlevant le namespace "cv::" devant l'appel ça devrait aller mieux je présume.
    Pas tout à fait : la fonction du C est cvCvtColor.

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Pas tout à fait : la fonction du C est cvCvtColor.
    Bien vu ! Je me suis laissé avoir par les types des arguments passés.

  6. #6
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonjour,

    oula, pas fait attention, je n'ai pas fait du copie coller directement j'ai retaper le code donc dans le compilateur je n'ai pas comis ces eerreur. Toute fois je travail sur VS2010 avec C++.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <cv.h>
    #include <highgui.h>
    IplImage *img,*imgB;
    void main()
    {
        img=cvloadImage("test.jpg");
        cv::cvtColor(img,imgB,CV_RGB2GRAY);
    }
    je ne savais pas que IplImage fait partie du C donc si je comprend bien je doit utiliser un autre type de variable comme :
    si c'est le cas mon programme sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <cv.h>
    #include <highgui.h>
    void main()
    {
    	cv::Mat img,imgB;
    	img=cv::imread("test.jpg");
    	cv::cvtColor(img,imgB,CV_RGB2GRAY);
    }
    les message d'erreur que j'ai maintenant :

    1>ok.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::cvtColor(class cv::Mat const &,class cv::Mat &,int,int)" (?cvtColor@cv@@YAXABVMat@1@AAV21@HH@Z) référencé dans la fonction _main
    1>ok.obj : error LNK2019: symbole externe non résolu "class cv::Mat __cdecl cv::imread(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?imread@cv@@YA?AVMat@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) référencé dans la fonction _main
    1>ok.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z) référencé dans la fonction "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ)
    1>ok.obj : error LNK2019: symbole externe non résolu "public: void __thiscall cv::Mat::copySize(class cv::Mat const &)" (?copySize@Mat@cv@@QAEXABV12@@Z) référencé dans la fonction "public: class cv::Mat & __thiscall cv::Mat::operator=(class cv::Mat const &)" (??4Mat@cv@@QAEAAV01@ABV01@@Z)
    1>ok.obj : error LNK2019: symbole externe non résolu "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ) référencé dans la fonction "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
    PS : je débute avec OpenCV donc j'apprend petit a petit, et je ne comprend pas les message d'erreur.

    merci

  7. #7
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    As-tu correctement indiqué dans ton projet les dépendances à OpenCV ?
    (voir la documentation)

  8. #8
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonsoir,

    en suivant le tuto video j'ai pu configurer opencv mais la solution générer ignore 6 fonction de + si j'utilise opencv 2.1 ou 2.2 j'ai recontrer plein de probleme comme génération echoué, quand j'ai utiliser opencv 2.4.3 aucun probleme au niveau de la génération mais il ignore 6.

    1- je teste premier programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <cv.h>
    #include <highgui.h>
    void main()
    {
     
    }
    nickel sa marche tranquile

    2- je teste un 2eme programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <cv.h>
    #include <highgui.h>
    void main()
    {
    	cv::Mat img;
    }
    message d'erreur

    Prog.obj : error LNK2001: symbole externe non résolu "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z)
    Prog.obj : error LNK2001: symbole externe non résolu "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ)
    c:\users\bandia\documents\visual studio 2010\Projects\Localisation\Debug\Localisation.exe : fatal error LNK1120: 2 externes non résolus
    et selon le tutoriel il avais se message d'erreur du coup dans l'editeur de lien / entrée /dependance supplementaire il a ajouter cxcore210d.lib et cv210d.lib.

    dans mon cas je doit ajouter cxcore243d.lib mais le problème est que la lib n'existe pas .

    donc actuellement j'utilise cv243.lib et highgui243.lib.

    3- je teste encore une fois un autre programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <cv.h>
    #include <highgui.h>
    void main()
    {
    	cv::Mat img;
    	img=cv::imread("obs.jpg");
    	cv::namedWindow( "Display window", CV_WINDOW_AUTOSIZE );
    	cv::imshow("camera",img);
    	cv::waitKey(0);
    }
    message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1>Prog.obj : error LNK2001: symbole externe non résolu "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::Mat const &)" (?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVMat@1@@Z)
    1>c:\users\bandia\documents\visual studio 2010\Projects\Localisation\Debug\Localisation.exe : fatal error LNK1120: 1 externes non résolus
    1>
    1>ÉCHEC de la build.
    et quand je test sans la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv::imshow("camera",img);
    sa marche nickel, je débute avec opencv et ne je ne comprend pas les message d'erreur.

    Merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    Il te manque de linker le fichier opencv_core243.lib

  10. #10
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonjour,

    j'ai déjà linker opencv_core243d.lib et aussi pour opencv_highgui243d.lib

  11. #11
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonsoir,

    je vais expliquer toute les etapes que j'ai fait pour configurer OpenCV

    1- Télécharger OpenCV 2.4.3
    2- Décompresser dans C:\

    3- crée un nouveau projet vide (VS2010)
    3.1 - propriété projet -> propriété de configuration -> répertoire VC++
    3.1.1- Répertoire Include = c:\OpenCV\include\opencv
    3.1.2- Répertoire de bibliothèque = c:\OpenCV\build\x86\vc10\lib

    3.2- propriété projet -> propriété de configuration -> editeur de lien -> entrée
    3.2.1- dépendance supplimentaire = opencv_core243.lib opencv_highgui243.lib

    4- Test programme 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <cv.h>
    #include <highgui243.h>
    IplImage *img;
    void main()
    {
    img=cvloadImage("test.jpg");
    cvShowImage("Test_1",img);
    }
    sa marche tranquile.

    5- Test programme 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <cv.h>
    #include <highgui243.h>
    cv::Mat img;
    void main()
    {
    img=cv::imread("test.jpg");
    cv::imshow("Test_1",img);
    }
    un gros message d'erreur qui s'affiche des dll que je ne use pas mais sont charger ou non
    'Projet_master.exe'*: Chargé 'C:\Users\Bandia\Documents\Visual Studio 2010\Projects\Projet_master\Debug\Projet_master.exe', Les symboles ont été chargés.
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Users\Bandia\Documents\Visual Studio 2010\Projects\Projet_master\Debug\opencv_core243.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvcp100.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvcr100.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Users\Bandia\Documents\Visual Studio 2010\Projects\Projet_master\Debug\opencv_highgui243.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7600.16385_none_ebf82fc36c758ad5\comctl32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\avifil32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msacm32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvfw32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\avicap32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvcp100d.dll', Les symboles ont été chargés.
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msvcr100d.dll', Les symboles ont été chargés.
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\nvinit.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Program Files\Lenovo\Bluetooth Software\syswow64\BtMmHook.dll', Cannot find or open the PDB file
    'Projet_master.exe'*: Chargé 'C:\Windows\SysWOW64\psapi.dll', Cannot find or open the PDB file
    Exception de première chance à 0x75afb727 dans Projet_master.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0016f444..
    Exception non gérée à 0x75afb727 dans Projet_master.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0016f444..
    Le programme '[6892] Projet_master.exe: Natif' s'est arrêté avec le code -529697949 (0xe06d7363).
    je ne sais plus quoi faire

  12. #12
    Invité
    Invité(e)
    Par défaut
    J'imagine que tu as encore fait une recopie à la main ?
    C'est
    #include <highgui243.h>
    exactement ; seuls les .lib et .dll ont ce chiffre à la fin.



    Citation Envoyé par Hamza Voir le message
    je vais expliquer toute les etapes que j'ai fait pour configurer OpenCV
    Sans oublier d'ajouter les bonnes .dll dans le projet, mais vu le message tu l'as aussi fait.

    Citation Envoyé par Hamza Voir le message
    4- Test programme 1
    Il manque l'appel à cvReleaseImage pour libérer la mémoire à la fin.

    Pour les deux codes, c'est int main et non void main avec un return approprié.

    Pour ce qui est de l'exception, as-tu vérifié que l'image était bien chargée ? (Chemin correct...)

  13. #13
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonsoir,

    encore une fois oui j'ai recopie a la main

    l'image est bien charger du moins je le pense, quand je lance le programme 2 sans cv::imshow le programme s’exécute correctement sans message d'erreur.

  14. #14
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bonsoir,

    après une longue recherche qui n'aboutie a rien je suis obliger de bosser avec les commandes du programme 1 (IplImage, cvLoadImage ....etc) je ne vais pas cocher le bouton résolu tant que le problème n'est pas résolu toute fois j'ai atteins mon objectif qui est la binarisation d'une image couleur.

    Je vais continuer mes recherche pour résoudre le problème avec les commande de type (cv::Mat, cv::imread .... etc) des que le problème sera résolu je posterais un message.

    merci pour votre aide.

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  3. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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