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étecter un objet


Sujet :

OpenCV

  1. #21
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    si j'ai essayé mais la meme erreur lors de l'execution !

  2. #22
    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
    Citation Envoyé par snowpy Voir le message
    si je dis pas de bêtise le repère est inversé dans openCV donc l'init serait plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int minX=0;
    int minY=0;
    int maxX=monImage->width;
    int maxY=monImage->height;


    ce qui donne un code tout à fait correct de visu (attention dans le if je n'ai pas vérifié)

    et on en profite pour rajouter ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //On vérifie l'origine de l'image
    //Si elle n'est pas en haut à gauche, il faut la corriger
    int flip=0;
    if(img->origin!=IPL_ORIGIN_TL)
    {
        flip=CV_CVTIMG_FLIP;
    }
    histoire de savoir ou se trouve reellement l'origine de l'image, on rajoute ca au tout début

    edit: autant pour moi je voyais pas le balayage de la même facon ca devrait fonctionner.

    je dirais même qu'il vaut mieux balayer suivant x et s'arreter plutot que de continuer à balayer c'est plus optimisé.

  3. #23
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if( (pixel.val[0] == 255) && (pixel.val[1] == 255) && (pixel.val[2] == 255))
                       {
                            if( j < minX)minX=j;
                            if( i < minY)minY=i;
                            if( j > maxX)maxX=j;
                            if( i > maxY)maxY=i;                   }
                else {
                           minX=0;
                           minY=0;
                           maxX=monImage->width;
                           maxY=monImage->height
    
    }
    et avec ca ?
    y'a une erreur dans vos codes corrigé ici en rouge.

  4. #24
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Points : 194
    Points
    194
    Par défaut
    Exact , bien vu, ca c'est les desagrements du copier coller. Mais le code que tu as mis ne peux pas marcher, il faut enlever ce else, car sinon tu perds toutes les informations accumulees au cours de l'iteration. Et tester toutes les composantes est pas vraiment utile s'il y a que du noir et du blanc mais c'est peut-etre pas une mauvaise habitude a prendre.

  5. #25
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    svp maintenant je veux calculer le nombre de pixels compris entre un contour de canny et une droite que jai tracée merci davance pour votre aide .

  6. #26
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Points : 194
    Points
    194
    Par défaut
    Soit plus precis je comprends pas du tout ce que tu essayes de faire, le nombre de pixels de la surface entre les deux? du plus court chemin? De toute facon pour tous c'est la meme techniques une boucle qui parcours tous tes pixels et qui incremente un compteur a chaque fois que le pixel est entre ta droite et ton contour( meme si je sais pas trop ce que ca veut dire...)

  7. #27
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    j'ai une image binaire , sur laquelle j'ai effectué le contour de canny, après j'ai dessiné une droite qui passe du milieu de mon contour et je veux calcuer le nombre de pixels blanc qui se situe dans l'intervalle entre le contour de canny et ma droite,

  8. #28
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Points : 194
    Points
    194
    Par défaut
    Je suis desole mais il va falloir que tu t'explique mieux si tu veux que je comprenne.
    j' une image binaire , sur laquelle j'ai effectué le contour de canny
    Ca veut dire que dans l'image que tu traites il reste plus que des contours? De quelle couleur( noir ou blanc)?
    après g dessiné une droite qui passe du milieu de mon contour
    De quelle couleur la droite? Explique mieux ce que tu veux dire par milieu: le centre? de quelle forme est ton contour?
    je veux calcuer le nombre de pixels blanc qui se situe dans l'intervalle entre le contour de canny et ma droite
    Si comprends bien alors les contours sont en noir et le reste en blanc. Mais il va falloir que tu precise ce que je t'ai demande au-dessus sinon je vois vraiment pas ce que tu veux faire.

  9. #29
    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
    tout d'abord attention à ta facon d'écrire relie toi, si tu zappe des mots ou que tu écris pas francais on risque de pas comprendre.

    hum je dirais (au depart son contour c'est un carré je crois) qu'elle a sont contour et qu'elle l'a coupé en deux et qu'elle veut le nombre de pixel se situant dans un des deux bout c'est ca ?

  10. #30
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    oui tas raison
    sur mon image il y a que les contours qui sont en blanc, et puis jai dessiné une droite blanche aussi, cette droite divise mon mon image en 2 partie, une partie en dessous du contour et en dessus de la droite, et une partie en dessous de la droite et en dessus du contour, et je veux calculer le nombre de pixels blans ki se trouvent dans chacune de ces parties.

  11. #31
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    mais mon contour n as pas une forme précise, il est aleatoire.

  12. #32
    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
    hum avec le min x,y et max x,y ca se fait tout dessuite ta la position de la droite (elle est horizontale verticale oblique ?) ?

    le contour tracé est un rectangle donc ce n'est pas un souci. Sinon ben on va balayer toute l'image en comptant les pixels blanc

    tu veux le nombre précis de pixel dans ta zone ?

  13. #33
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    ma droite est oblique, elle passe par 2 points que jai definis

  14. #34
    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
    tu veux le nombre précis de pixel ou une approximation ?

  15. #35
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    a vrai dire je veux que ça soit precis

  16. #36
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Points : 194
    Points
    194
    Par défaut
    Si tu postais un exemple d'image je suis sur qu'on pourrait t'aider beaucoup plus facilement.
    Juste une question sinon: tu utilise cvLine pour tracer la droite?

  17. #37
    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
    comme l'a dit glen poste ton image et le code que tu as pour la droite.

  18. #38
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    oui jai utilisé cvLine et j'ai défini 2 points par lesquelles ma droite va passer.
    ( j'ai voulu poster une image mais ça marche pas :s, l'image ne s'affiche pas)

  19. #39
    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
    poste ton code stp

  20. #40
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    voilà le code: mais


    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
     
    #include <cv.h>
    #include <highgui.h>
    int main()
     
    {
    IplImage *img, *img_gris, *img_bin, *img_canny;
     
    img=cvLoadImage("img.jpg");
     
    cvNamedWindow("image", CV_WINDOW_AUTOSIZE);
    cvShowImage("image", img);
     
    img_gris=cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
    img_bin=cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
    img_canny=cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
     
     
    cvCvtColor(img,img_gris,CV_RGB2GRAY);
     
     
    	int seuil=110;
    cvThreshold(img_gris, img_bin, seuil, 255, CV_THRESH_BINARY);
     
    IplConvKernel *noyau;
    noyau=cvCreateStructuringElementEx(3,3,2,2,CV_SHAPE_RECT);
    cvErode(img_bin,img_bin,noyau,1);
    cvDilate(img_bin,img_bin,noyau,1);
     
     
     
    cvCanny(img_bin, img_canny, 100, 200);
     
     
     
    cvLine(img_canny, cvPoint(0, img->height-15), cvPoint(img->width, 35), cvScalar (255), 1);
    cvLine(img_canny, cvPoint(0, img->height), cvPoint(img->width,img->height-25), cvScalar(255),1 );
     
    cvNamedWindow("image grise", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("image binaire", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("image canny", CV_WINDOW_AUTOSIZE);
    cvShowImage("image grise", img_gris);
    cvShowImage("image binaire", img_bin);
    cvShowImage("image canny", img_canny);
     
     
     
     
     cvWaitKey(0);
     return 0;
    }

Discussions similaires

  1. [QTP] Impossible de détecter les objets web
    Par Fabii dans le forum Test
    Réponses: 0
    Dernier message: 26/03/2012, 15h18
  2. Réponses: 4
    Dernier message: 04/05/2010, 13h15
  3. détecter qu'un objet est reçu complètement
    Par ratakses dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/05/2007, 19h39
  4. [Javascript] Détecter collision de deux objets <img>
    Par Invité4 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/04/2006, 08h54
  5. Réponses: 2
    Dernier message: 19/11/2005, 18h32

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