si tu remarques bien y a un & devant son CV_IMAGE_ELEM et je ne sais pas à quoi cela correspond donc je cherche si je trouve je te réponds ^^
et si tu trouve avant moi ben c'est toi qui me réponds
si tu remarques bien y a un & devant son CV_IMAGE_ELEM et je ne sais pas à quoi cela correspond donc je cherche si je trouve je te réponds ^^
et si tu trouve avant moi ben c'est toi qui me réponds
oui j'ai remarqué '&' j'ai cherché ce qu'il correspond mas aucune résultats
mais j'ai pas arrête de rechercher
le & est la pour éviter de répéter 3 fois le CV_IMAGE_ELEM, y a un exemple similaire dans la doc de openCV :
Donc les pointeurs utilisés pointe sur les 3 channels, l'explication que je donne est donc bonne il s'agit des 3 channels. Le pourquoi de il les utilise en tant que coordonnée je ne sais pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 e.g. increasing brightness of point (100,100) by 30 can be done this way: CvPoint pt = {100,100}; ((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3] += 30; ((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+1] += 30; ((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+2] += 30;or more efficiently CvPoint pt = {100,100}; uchar* temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3]; temp_ptr[0] += 30; temp_ptr[1] += 30; temp_ptr[2] += 30;
Le but général du programme est de faire quoi ?
(je pencherais pour une utilisation détournée)
après la recherche le seul doc qui j'ai lr trouvé utilisé "&" est cette page
CV_IMAGE_ELEM c'est juste une macro pour simplifier l'acces bas niveau aux valeurs d'un pixel. Elle est definie comme ca:
Si jamais c'est toujours pas clair, expliquez en detail ce qui vous pose probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 /* get reference to pixel at (col,row), for multi-channel images (col) should be multiplied by number of channels */ #define CV_IMAGE_ELEM( image, elemtype, row, col ) \ (((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])
pour moi pas de problème ca correspond au valeur du pixel celon les channels, un pointeur sur la couleur du pixel
Desole, je viens de regarder le code de la page http://www.koders.com/cpp/fid21C089B...x?s=opencv#L45 et je comprends ce qui vous pose probleme. Le CV_IMAGE_ELEM fait bien exactement ce que jai dit, la particularite ici c'est que pCoords n'est pas une image ordinaire, elle est declaree comme suit :mais quelle est l'utilité de récupérer les canaux de l'image ?
je sais que son objectif de multiplication est de trouvé la nouvelle position du pixel qui est (u2,v2)
En fait c'est un tableau d'informations (contenant des coordonnees tout simplement) calcules precedemment et qui est passe en parametre a la methode. Ce qui vous pose probleme c'est qu'il est choisi une structure IplImage pour stocker ces informations, mais au final c'est une strucure qui peut etre utilisee pour stocker autre chose que l'intensite des pixels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part IplImage* pCoords = pmd_level.m_pCoords;
ah j'ai compris merciiiiiiiiiiiiiiii glen1789
mais désolé
comment vous avez compris ça ou comment vous avez trouvé que pCoords est un tableau . ?En fait c'est En fait c'est un tableau d'informations (contenant des coordonnees tout simplement) calcules precedemment et qui est passe en parametre a la methode. Ce qui vous pose probleme c'est qu'il est choisi une structure IplImage pour stocker ces informations, mais au final c'est une strucure qui peut etre utilisee pour stocker autre chose que l'intensite des pixels. d'informations (contenant des coordonnees tout simplement) calcules precedemment et qui est passe en parametre a la methode. Ce qui vous pose probleme c'est qu'il est choisi une structure IplImage pour stocker ces informations, mais au final c'est une strucure qui peut etre utilisee pour stocker autre chose que l'intensite des pixels.
le coup du tableau c'est de l'expérience je dirais non ? j'avais remarqué le passage par la fonction mais aucune idée de ce que c'était
je ne pense pas que vous avez me dit . mais comment de l'expérience ? est ce qu'il existe une ligne qui représente que c'est un tableau ou comment il a rempli ce tableauj'ai rien trouvée coup du tableau c'est de l'expérience je dirais non ?
j'ai lu une autre fois( plus d'une fois) le code et j'ai pas trouvé quelque chose qui montre que
pCoords c'est un tableau
En fait c'est juste en regardant l'utilisation qu'il en fait qui m'a fait comprendre que ce n'etait pas une image mais un tableau d'informations (coordonnees des pixels). En cherchant un peu je suis tombe sur la declaration de sa classe, ca t'aidera peut-etre a comprendre :
http://www.koders.com/cpp/fidBDC1C29....aspx?s=opencv
oui j'ai vu cette déclaration mais j'ai pas trouvé ou il a rempli les X,Y,Z
il a fait des initialisation mais il n'a rien modifié
Si tu cherche ca je te conseille d'aller voir du cote du main si il est dispo, je pense que si tu trouves pas une reponse directement dedans au moins tu trouveras une piste sur quelle fichier initialise pCoords. Sinon il y a l'autre technique c'est de telecharger son programme et de le faire tourner pour voir ce qu'il y met dedans.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager