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 :

Problème


Sujet :

OpenCV

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Problème
    Bonjour,
    je travaillais auparavant avec opencv 2.1, je suis passé à la 2.2 et le programme bug à un moment. L'erreur est la suivante:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    *** glibc detected *** ./Prog: malloc(): memory corruption: 0x08940af0 ***
    ======= Backtrace: =========
    /lib/libc.so.6(+0x6c501)[0xa32501]
    /lib/libc.so.6(+0x6f2fc)[0xa352fc]
    /lib/libc.so.6(__libc_malloc+0x63)[0xa36f33]
    /usr/lib/libstdc++.so.6(_Znwj+0x29)[0x83b619]
    /usr/lib/libstdc++.so.6(_Znaj+0x1d)[0x83b74d]
    ./Prog[0x804b648]
    ./Prog[0x804a6ab]
    /lib/libc.so.6(__libc_start_main+0xe7)[0x9dcce7]
    ./Prog[0x804a461]
    ======= Memory map: ========
    00110000-00183000 r-xp 00000000 08:05 313598     /usr/local/lib/libopencv_ml.so.2.2.0
    00183000-00184000 ---p 00073000 08:05 313598     /usr/local/lib/libopencv_ml.so.2.2.0
    00184000-00185000 r--p 00073000 08:05 313598     /usr/local/lib/libopencv_ml.so.2.2.0
    00185000-00186000 rw-p 00074000 08:05 313598     /usr/local/lib/libopencv_ml.so.2.2.0
    00186000-001be000 r-xp 00000000 08:05 313610     /usr/local/lib/libopencv_video.so.2.2.0
    001be000-001bf000 r--p 00037000 08:05 313610     /usr/local/lib/libopencv_video.so.2.2.0
    001bf000-001c0000 rw-p 00038000 08:05 313610     /usr/local/lib/libopencv_video.so.2.2.0
    001c0000-001c5000 r-xp 00000000 08:05 313548     /usr/local/lib/libopencv_flann.so.2.2.0
    001c5000-001c6000 r--p 00004000 08:05 313548     /usr/local/lib/libopencv_flann.so.2.2.0
    001c6000-001c7000 rw-p 00005000 08:05 313548     /usr/local/lib/libopencv_flann.so.2.2.0
    001c7000-001e1000 r-xp 00000000 08:05 94         /lib/libgcc_s.so.1
    001e1000-001e2000 r--p 00019000 08:05 94         /lib/libgcc_s.so.1
    001e2000-001e3000 rw-p 0001a000 08:05 94         /lib/libgcc_s.so.1
    001e3000-001f8000 r-xp 00000000 08:05 33631      /lib/libpthread-2.12.1.so
    001f8000-001f9000 ---p 00015000 08:05 33631      /lib/libpthread-2.12.1.so
    001f9000-001fa000 r--p 00015000 08:05 33631      /lib/libpthread-2.12.1.so
    001fa000-001fb000 rw-p 00016000 08:05 33631      /lib/libpthread-2.12.1.so
    001fb000-001fd000 rw-p 00000000 00:00 0 
    001fd000-001ff000 r-xp 00000000 08:05 33617      /lib/libdl-2.12.1.so
    001ff000-00200000 r--p 00001000 08:05 33617      /lib/libdl-2.12.1.so
    00200000-00201000 rw-p 00002000 08:05 33617      /lib/libdl-2.12.1.so
    00201000-00220000 r-xp 00000000 08:05 266952     /usr/lib/libjpeg.so.62.0.0
    00220000-00221000 r--p 0001e000 08:05 266952     /usr/lib/libjpeg.so.62.0.0
    00221000-00222000 rw-p 0001f000 08:05 266952     /usr/lib/libjpeg.so.62.0.0
    00222000-00235000 r-xp 00000000 08:05 209        /lib/libz.so.1.2.3.4
    00235000-00236000 r--p 00012000 08:05 209        /lib/libz.so.1.2.3.4
    00236000-00237000 rw-p 00013000 08:05 209        /lib/libz.so.1.2.3.4
    00238000-00310000 r-xp 00000000 08:05 312347     /usr/local/lib/libopencv_features2d.so.2.2.0
    00310000-00311000 ---p 000d8000 08:05 312347     /usr/local/lib/libopencv_features2d.so.2.2.0
    00311000-00312000 r--p 000d8000 08:05 312347     /usr/local/lib/libopencv_features2d.so.2.2.0
    00312000-00313000 rw-p 000d9000 08:05 312347     /usr/local/lib/libopencv_features2d.so.2.2.0
    00313000-0038d000 r-xp 00000000 08:05 284219     /usr/local/lib/libopencv_calib3d.so.2.2.0
    0038d000-0038e000 r--p 00079000 08:05 284219     /usr/local/lib/libopencv_calib3d.so.2.2.0
    0038e000-0038f000 rw-p 0007a000 08:05 284219     /usr/local/lib/libopencv_calib3d.so.2.2.0
    00391000-0054d000 r-xp 00000000 08:05 313580     /usr/local/lib/libopencv_imgproc.so.2.2.0
    0054d000-0054f000 r--p 001bb000 08:05 313580     /usr/local/lib/libopencv_imgproc.so.2.2.0
    0054f000-00550000 rw-p 001bd000 08:05 313580     /usr/local/lib/libopencv_imgproc.so.2.2.0
    00550000-005e4000 rw-p 00000000 00:00 0 
    005e7000-0060b000 r-xp 00000000 08:05 33619      /lib/libm-2.12.1.so
    0060b000-0060c000 r--p 00023000 08:05 33619      /lib/libm-2.12.1.so
    0060c000-0060d000 rw-p 00024000 08:05 33619      /lib/libm-2.12.1.so
    0060d000-00630000 r-xp 00000000 08:05 164        /lib/libpng12.so.0.44.0
    00630000-00631000 r--p 00022000 08:05 164        /lib/libpng12.so.0.44.0
    00631000-00632000 rw-p 00023000 08:05 164        /lib/libpng12.so.0.44.0
    00632000-0068a000 r-xp 00000000 08:05 289997     /usr/lib/libtiff.so.4.3.3
    0068a000-0068c000 r--p 00057000 08:05 289997     /usr/lib/libtiff.so.4.3.3
    0068c000-0068d000 rw-p 00059000 08:05 289997     /usr/lib/libtiff.so.4.3.3
    0068d000-0068f000 r-xp 00000000 08:05 266605     /usr/lib/libgmodule-2.0.so.0.2600.1
    0068f000-00690000 r--p 00002000 08:05 266605     /usr/lib/libgmodule-2.0.so.0.2600.1
    00690000-00691000 rw-p 00003000 08:05 266605     /usr/lib/libgmodule-2.0.so.0.2600.1
    00691000-00694000 r-xp 00000000 08:05 267852     /usr/lib/libgthread-2.0.so.0.2600.1
    00694000-00695000 r--p 00003000 08:05 267852     /usr/lib/libgthread-2.0.so.0.2600.1
    00695000-00696000 rw-p 00004000 08:05 267852     /usr/lib/libgthread-2.0.so.0.2600.1
    00698000-006d2000 r-xp 00000000 08:05 313552     /usr/local/lib/libopencv_highgui.so.2.2.0
    006d2000-006d3000 r--p 00039000 08:05 313552     /usr/local/lib/libopencv_highgui.so.2.2.0
    006d3000-006d4000 rw-p 0003a000 08:05 313552     /usr/local/lib/libopencv_highgui.so.2.2.0
    006d4000-006d5000 rw-p 00000000 00:00 0 
    006d5000-0078b000 r-xp 00000000 08:05 313585     /usr/local/lib/libopencv_legacy.so.2.2.0
    0078b000-0078d000 r--p 000b5000 08:05 313585     /usr/local/lib/libopencv_legacy.so.2.2.0
    0078d000-0078e000 rw-p 000b7000 08:05 313585     /usr/local/lib/libopencv_legacy.so.2.2.0
    0078e000-0078f000 rw-p 00000000 00:00 0 
    0078f000-0086e000 r-xp 00000000 08:05 267228     /usr/lib/libstdc++.so.6.0.14
    0086e000-00872000 r--p 000de000 08:05 267228     /usr/lib/libstdc++.so.6.0.14
    00872000-00873000 rw-p 000e2000 08:05 267228     /usr/lib/libstdc++.so.6.0.14
    00873000-0087a000 rw-p 00000000 00:00 0 
    0087a000-008bd000 r-xp 00000000 08:05 266950     /usr/lib/libjasper.so.1.0.0
    008bd000-008be000 r--p 00042000 08:05 266950     /usr/lib/libjasper.so.1.0.0
    008be000-008c1000 rw-p 00043000 08:05 266950     /usr/lib/libjasper.so.1.0.0
    008c1000-008c7000 rw-p 00000000 00:00 0 
    008c7000-008df000 r-xp 00000000 08:05 266452     /usr/lib/libatk-1.0.so.0.3209.1
    008df000-008e0000 ---p 00018000 08:05 266452     /usr/lib/libatk-1.0.so.0.3209.1
    008e0000-008e1000 r--p 00018000 08:05 266452     /usr/lib/libatk-1.0.so.0.3209.1
    008e1000-008e2000 rw-p 00019000 08:05 266452     /usr/lib/libatk-1.0.so.0.3209.1
    008e2000-00906000 r-xp 00000000 08:05 289509     /usr/lib/libpangoft2-1.0.so.0.2800.2
    00906000-00907000 r--p 00023000 08:05 289509     /usr/lib/libpangoft2-1.0.so.0.2800.2
    00907000-00908000 rw-p 00024000 08:05 289509     /usr/lib/libpangoft2-1.0.so.0.2800.2
    00908000-00912000 r-xp 00000000 08:05 289508     /usr/lib/libpangocairo-1.0.so.0.2800.2
    00912000-00913000 r--p 00009000 08:05 289508     /usr/lib/libpangocairo-1.0.so.0.2800.2Aborted

    Quelqu'un aurait une idée de la source du probleme?

    D'avance merci.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Points : 533
    Points
    533
    Par défaut
    Bonjour

    Un souci de sizeof dans un malloc non ? Il ne te donne pas la ligne précise ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Il ne me donne pas d'endroit ou le probleme fait ca. Mais j'ai reussi à trouver ou le probleme se produisait avec des flags. La ligne qui pose probleme serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv_corners1 = new CvPoint2D32f[ind];
    Déja, ce qui me semble bizarre c'est que cela ne se produisait pas avec opencv 2.1.
    Je développe sous linux, j'ai fait mon makefile, apres je ne sais pas si la taille mémoire alloué pour opencv2.2 est pas plus faible que sur les anciennes versions d'opencv...

    J'ai regardé sur internet, des personnes avaient ce probleme quand il utilisait les fonctions malloc ou free mais la je ne les utilise pas directement.

    Un bug sur opencv 2.2 ??

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Points : 533
    Points
    533

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Comment je dois faire pour rajouter ca dans mon makefile ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Alors déjà, si tu es en c++, utilise l'interface c++ d'OpenCV. C'est quand même largement plus propre, et il y a des chances (assez faibles, quand même) que ton bug disparaisse.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    C'est quoi l'interface c++ d'opencv?

    Dans mon makefile, je met bien les libs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++  `pkg-config --cflags opencv` `pkg-config --libs opencv` $(OBJ)  -o src/$@ $(LDFLAGS)
    Mais visiblement ca bug...

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    C'est juste OpenCv avec une approche orientée objet.

    Un petit coup d'oeil sur la doc pourrait t’éclairer.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Ah c'est ca. Oui je connais mais bon ca ne régle pas mon probleme ...
    Pourquoi ca ne le faisait pas avec opencv 2.1 et avec les memes fonctions sous 2.2 ca plante...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    En fait j'ai mis opencv 2.2 sur mon pc parce qu'il y a la fonction Fast permettant de faire rapidement la recherche de point d'intéret.
    Je crois que cette fonction crée des problemes ...
    Quand je l'enleve ca ne fait plus le probleme...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par black_hole Voir le message
    En fait j'ai mis opencv 2.2 sur mon pc parce qu'il y a la fonction Fast permettant de faire rapidement la recherche de point d'intéret.
    Je crois que cette fonction crée des problemes ...
    Quand je l'enleve ca ne fait plus le probleme...
    Bonsoir,

    Tes dernières informations donneraient envie de voir le bout de code que tu utilises pour appeler Fast. Ca sent l'allocation mémoire mal faite quelque part mais il en faudrait plus pour en comprendre la cause exacte.
    Autre approche: regarder les paramètres d'appel de Fast et voir ce qui doit être alloué, ce qui ne doit pas l'être, s'il faut initialiser certaines entrées à NULL pour indiquer que l'espace est non encore alloué.

    Et j'oubliais: que vaut le ind que tu passes en paramètres de ton 'new ...' ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Merci pour ta réponse.
    Le ind est le nombre de corner que j'ai en sortie de la fonction. Mai je diminue ce nombre de point en les filtrant (éviter l'agglutina de points ...). J'ai vérifié, quand j'ai le probleme ce nombre de point ind est à 30 ou 52 mais pas enorme ...

    Voila les paramètres la fonction:
    # mage – The image. Keypoints (corners) will be detected on this.
    # keypoints – Keypoints detected on the image.
    # threshold – Threshold on difference between intensity of center pixel and pixels on circle around this pixel. See description of the algorithm.
    # nonmaxSupression – If it is true then non-maximum supression will be applied to detected corners (keypoints).
    Pour keypoints ils ne disent pas si il faut l'allouer. alors j'ai fait les deux mais ca ne marche pas.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par black_hole Voir le message
    Merci pour ta réponse.
    Le ind est le nombre de corner que j'ai en sortie de la fonction. Mai je diminue ce nombre de point en les filtrant (éviter l'agglutina de points ...). J'ai vérifié, quand j'ai le probleme ce nombre de point ind est à 30 ou 52 mais pas enorme ...

    Voila les paramètres la fonction:
    # mage – The image. Keypoints (corners) will be detected on this.
    # keypoints – Keypoints detected on the image.
    # threshold – Threshold on difference between intensity of center pixel and pixels on circle around this pixel. See description of the algorithm.
    # nonmaxSupression – If it is true then non-maximum supression will be applied to detected corners (keypoints).
    Pour keypoints ils ne disent pas si il faut l'allouer. alors j'ai fait les deux mais ca ne marche pas.
    Bonjour,

    Je me demande si nonmaxSuppression mis à true ne génère pas des problèmes mémoires: conservation d'un pointeur sur une zone libérée.
    Cette analyse est super rapide car je t'avoue être sur autre chose.
    Tu peux aller regarder le code source de la méthode (perso, j'ai regardé à cette adresse http://mi.eng.cam.ac.uk/~er258/work/fast.html mais je n'ai pas regardé dans le code livré)
    keypoints ne doit pas être alloué d'après le code.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Euh comme je fais pour savoir si crée une conservation de pointeur sur une zone libéré??

    Ensuite j'utilise directement la bibliotheque sur opencv donc je n'ai rien installé à part opencv 2.2. Normalement, c'est censé etre stable... non??

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par black_hole Voir le message
    Euh comme je fais pour savoir si crée une conservation de pointeur sur une zone libéré??

    Ensuite j'utilise directement la bibliotheque sur opencv donc je n'ai rien installé à part opencv 2.2. Normalement, c'est censé etre stable... non??
    Pour ta première question, si je suis sous Linux, j'utilise valgrind.
    Sinon, je regarde le code.
    Si tu ne sais pas comment faire, essaye avec l'option nonmaxSuppression à false (ou 0): si cela ne marche toujours pas, j'essayerais de voir plus tard d'autant que cette méthode Fast m'intéresse bien.
    Merci pour me l'avoir révélée! :-)

    OpenCV est une librairie développée par des êtres humains brillants mais faillibles: elle n'est donc pas exempt de bug.
    Ensuite, chaque méthode a des prérequis pour fonctionner correctement: Ces prérequis ne sont (ne peuvent) pas toujours (être) validés à l'exécution alors autant s'assurer avant qu'on passe les paramètres de la manière qui convient.
    J'en profite pour les remercier pour leur excellent travail car cette librairie me simplifie bien la vie et me fait gagner beaucoup de temps.

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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