1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
list<CvPoint3D32f> xs1; //déjà initialisé et contient bien les coordonnées
double C1[9]; //matrice de transformation déjà initialisée {L1, L2, L3}
float *xs1Arr = (float *)cvAlloc(sizeof(float) * nb_pts * 3),
*xs1ArrRes = (float *)cvAlloc(sizeof(float) * nb_pts * 3);
/*nb_pts est le nombre de points, nb_pt = xs1.size();*/
it_xs = xs1.begin();
for(i = 0;it_xs != xs1.end();it_xs++, i++)
{
xs1Arr[i] = it_xs->x;
xs1Arr[++i] = it_xs->y;
xs1Arr[++i] = it_xs->z;
}
CvMat xs1Mat = cvMat(nb_pts, 1, CV_32FC3, xs1Arr), xs1MatRes = cvMat(nb_pts, 1, CV_32FC3, xs1ArrRes);
CvMat transmat1 = cvMat(3, 3, CV_32FC1, C1);
cvTransform(&xs1Mat, &xs1MatRes, &transmat1);
//xs1ArrRes est alors le tableau *float qui contient les coordonnées transformées |
Partager