J'essaye d'implémenter this answer de math.stackexchange dans eclispe avec C++ et OpenCV 3.0.0 (bêta).
J'utilise le code ci-dessous pour cela.Comment convertir 'cv :: Mat' en 'double'?
Mat a = (Mat_<double>(1,3) << rotationMatrix1.at<double>(2,0), rotationMatrix1.at<double>(2,1), rotationMatrix1.at<double>(2,2));
Mat b = (Mat_<double>(1,3) << rotationMatrix2.at<double>(2,0), rotationMatrix2.at<double>(2,1), rotationMatrix2.at<double>(2,2));
Mat f = (Mat_<double>(1,3) << a , (b-(a.dot(b))*a)/norm(b-(a.dot(b))*a),a.cross(b));
Mat f1 = f.inv(DECOMP_CHOLESKY);
Mat g = (Mat_<double>(3,3) << a.dot(b), - norm(a.cross(b)), 0, norm(a.cross(b)), a.dot(b), 0, 0,0,1);
Mat u = f1.inv(DECOMP_CHOLESKY) * g * f1;
quand je compile cela se traduit par l'erreur suivante:
/include/opencv2/core/mat.inl.hpp:2827:15: error: invalid cast from type 'cv::MatExpr' to type 'double'
/include/opencv2/core/mat.inl.hpp:2827:15: error: invalid cast from type 'cv::Mat' to type 'double'
Le problème réside probablement dans cette ligne:
Mat f = (Mat_<double>(1,3) << a , (b-(a.dot(b))*a)/norm(b-(a.dot(b))*a),a.cross(b));
parce que "a" et « (b- (a.dot (b)) * a)/norme (b- (a.dot (b)) * a) "ne sont pas 'doubles'.
Donc, ma question est de savoir comment les convertir en «double» de manière correcte?
Merci, j'avais oublié que f est une matrice 3x3 – sadhi