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 :
- 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 :
- float32 * pCoords->imageData
|
renvoit sur une zone mémoire valide (à supposer que frame_size soit non nulle)
Donc quand tu fais ça :
Code :
- 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
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.