2015-03-26 1 views
0

Я использую opencv 3.0.как инвертировать преобразование cv :: Affine3d

Я использую cv::Affine3d заявил так:

резюме :: Vec3d ом = ...;
cv :: Vec3d T = ...;
cv :: Affine3d aff (om, T);

Затем я использую aff для преобразования X в Y, как это:

резюме :: Vec3d X;
cv :: Vec3d Y = aff * X;

Теперь я хотел бы сделать обратное преобразование, чтобы преобразовать Y в X?

+0

Откуда этот класс affin3d? google дает только модуль Viz, который, вероятно, предназначен для визуализации вместо вычисления. если этот класс предоставляет любые геттеры, вы можете создать мат из него и инвертировать этот мат. – Micka

+0

Я использую opencv 3.0 beta. Этот класс объявлен в "opencv2/core/affine.hpp" – artoon

ответ

1

Я предположил бы, что

cv::Affine3d affInverse = aff.inv(); // Calls inv() on the internal matrix 
            // and returns a new object from that. 

cv::Vec3d xPrime = affInverse * Y; 

делает трюк. Дополнительную информацию см. В заголовке, который вы упомянули.

Кроме того, documentation должен предоставить дополнительную информацию о Matx, хранящемся в Affine3d.

Надеюсь, что это поможет!