CV_IMAGE_ELEM ?

CV_IMAGE_ELEM ? - C++ - Programmation

Marsh Posté le 13-06-2010 à 10:02:53    

bonjour,
je voudrais savoir l'utilité de cette fct  "CV_IMAGE_ELEM" je sais quelle est utilisé pour accés à les coordonnais de l'image mais j'ai pas bien compris ces paramètres

Reply

Marsh Posté le 13-06-2010 à 10:02:53   

Reply

Marsh Posté le 13-06-2010 à 11:02:09    

Toi, t'as du bol que je fasse du OpenCV, parce que présenté comme ça, personne sait ce que tu fais hein.
 
CV_IMAGE_ELEM, spa une fonction, c'est une macro qui doit ressembler à ça :  
 
 

Code :
  1. CV_IMAGE_ELEM(img, type,y, x_Nc) img->(type)imageData[y*img->width + x_Nc]


 
Pour info google renvoie ça en premier : http://osdir.com/ml/lib.opencv/2006-03/msg00914.html

Reply

Marsh Posté le 13-06-2010 à 12:27:20    

mercii snafu8

Reply

Marsh Posté le 13-06-2010 à 17:55:42    

ca m'a l'air super user-friendly openCV [:pingouino]

Reply

Marsh Posté le 15-06-2010 à 16:42:55    

clair et encore là t'as rien vu. Dreamvig, pour tes questions sur openCV je te conseille quand même de passer par la liste de diff ou le irc, parce que ici, j'ai un peu l'impression que je suis le seul à en faire en fait.

Reply

Marsh Posté le 15-06-2010 à 21:09:59    

merci snafu8 pour votre conseil

Reply

Marsh Posté le 20-06-2010 à 09:55:49    

[bonjour,
toujours j'ai un problème avec CV_IMAGE_ELEM  :cry:  
j'ai trouvé ça

Code :
  1. IplImage* pCoords;
  2.   pCoords = cvCreateImage(frame_size, IPL_DEPTH_32F, 3);
  3. //(u,v) coordonnée d'un pixel  
  4.   float* pixel_coords = &CV_IMAGE_ELEM(pCoords, float, v, u*3);
  5.         float x = pixel_coords[0];
  6.         float y = pixel_coords[1]; 
  7.         float z = pixel_coords[2];


dans ce code là , comment il a utilisé CV_IMAGE_ELEM malgré notre image pCoords est vide ????? en plus de ça il a récupérer 3 coordonnée ????

Reply

Marsh Posté le 22-06-2010 à 01:09:15    

Le mec qui a écrit ça est un sagouin, mais ca ne remets pas en question ce que j'ai dit plus haut.
 
quand tu fais ça :  
 

Code :
  1. pCoords = cvCreateImage(frame_size, IPL_DEPTH_32F, 3);


 
une image de flottant, à 3 canaux, de taille frame_size est allouée, même si les valeurs qu'elle contient pour l'instant sont indéterminées. Le pointeur  
 

Code :
  1. float32 * pCoords->imageData


 
renvoit sur une zone mémoire valide (à supposer que frame_size soit non nulle)
 
Donc quand tu fais ça :  
 

Code :
  1. float32 * pixel_coords = &CV_IMAGE_ELEM(pCoord, float32, v, u*3);


 
le pointeur pixel_coords pointe vers la première composante de la case (u,v) de ton image.  
 
Après, si il fait  
 

Code :
  1. pixel_coords[2]


 
c'est parce que (/!\Disclaimer : je pense que je vais me faire tomber dessus par un intégriste en écrivant ça)
pixel_coords[2] = *(pixel_coords + 2), ça revient juste à se décaler de deux, pour aller taper dans la troisième composante de la case (u,v) du tableau.

Reply

Marsh Posté le 22-06-2010 à 07:56:34    

snafu8 a écrit :


pixel_coords[2] = *(pixel_coords + 2), ça revient juste à se décaler de deux, pour aller taper dans la troisième composante de la case (u,v) du tableau.


 
nonon c'est bien ça

Reply

Marsh Posté le 23-06-2010 à 01:30:16    

J'aurais voulu prouver que joel f == intégriste, j'aurais pas fait autrement. \o/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed