Я разрабатываю приложение для оценки поз с библиотеками OpenCV и ArUco.В моей сцене есть два маркера, скажем, A и B. Я знаю позу (tvec
и rvec
) A и B, поэтому поза относительно камеры.
Я хочу знатьпоза B относительно A. Я знаю, что OpenCV обеспечивает cv::Rodrigues
, и я пытался использовать его, но я думаю, что у меня нет теории.Вот что я попробовал:
[...]
cv::Rodrigues(rvecs[0], R1_rodriguez);
cv::Rodrigues(rvecs[1], R2_rodriguez);
cv::Mat R1 = R1_rodriguez;
cv::Mat R2 = R2_rodriguez;
cv::Mat M1 = (cv::Mat_<double>(4,4) <<
R1.at<double>(0,0),R1.at<double>(0,1),R1.at<double>(0,2),tvecs[0][0],R1.at<double>(1,0),R1.at<double>(1,1),R1.at<double>(1,2),tvecs[0][1],R1.at<double>(2,0),R1.at<double>(2,1),R1.at<double>(2,2),tvecs[0][2],0.0,0.0,0.0,1.0);
cv::Mat M2 = (cv::Mat_<double>(4,4) <<
R2.at<double>(0,0),R2.at<double>(0,1),R2.at<double>(0,2),tvecs[1][0],R2.at<double>(1,0),R2.at<double>(1,1),R2.at<double>(1,2),tvecs[1][1],R2.at<double>(2,0),R2.at<double>(2,1),R2.at<double>(2,2),tvecs[1][2],0.0,0.0,0.0,1.0);
cv::Mat M1_inv = M1.inv();
cv::Mat M2inM1 = M1_inv*M2;
Итак, мой вопрос: как я могу "сопоставить" B с A, так как я могу узнать позу B относительно A (зная позу в кадре камеры)?Другими словами, я представляю А как (0,0,0) и хочу знать позу (так что перевод и вращение) Б. Спасибо заранее.