openCV est librairie de fonctions pour vision par ordinateur.
CvMat est une variable de type matrice.
J'utilise la fonction :
cvRodrigues(CvMat* rotMatrix,CvMat* rotVector,CvMat* jacobian,int convType)
voilà ce que fait la fonction:
Converts rotation matrix to rotation vector and vice versa with single precision.
rotMatrix: Rotation matrix (3x3), 32-bit or 64-bit floating point.
rotVector: Rotation vector (3x1 or 1x3) of the same type as rotMatrix.
jacobian: Jacobian matrix 3 × 9.
convType: Type of conversion; must be CV_RODRIGUES_M2V for converting the matrix to the vector or V_RODRIGUES_V2M for converting the vector to the matrix.
je veux transformer une matrice de rotation en un vecteur de rotation
(3 angles d'euler) voici mon programme-test:
CvMat* rotVector = new CvMat[3];
CvMat* jacobian = new CvMat[27];
int convType = CV_RODRIGUES_M2V;
cvRodrigues( rotMatrixes, rotVector, jacobian, convType);
en effet la matrice rotMatrixes est calculée par une autre fonction, mais le grand problème c'est que cette matrice n'est pas de type CvMat
mais CvMatr32f qui est un autre type de matrice. Le compilateur détécte une erreur qui est:
error C2664: 'cvRodrigues' : cannot convert parameter 1 from 'float *' to 'struct CvMat *'
et si je fais un cast (CvMat)rotMatrixes le programme s'exécute mais lorsqu'il arrive à la fonction cvRodrigues il plante ...
On m'a dit que le casting ne marche pas avec C++ et là franchement j'arrive pas à voir ce qu'il faut faire...
Merci d'avance pour toute aide.