给定一个3 x 3旋转矩阵,R和一个3 x 1平移矩阵T,我想知道如何将T和R矩阵乘以图像?
让我们说Iplimage img是640 x 480。
我想做的是R*(T*img)
。
我正在考虑使用cvGemm,但这不起作用。
答案 0 :(得分:4)
您正在搜索的功能可能是warpPerspective():这是一个用例......
// Projection 2D -> 3D matrix
Mat A1 = (Mat_<double>(4,3) <<
1, 0, -w/2,
0, 1, -h/2,
0, 0, 0,
0, 0, 1);
// Rotation matrices around the X axis
Mat R = (Mat_<double>(4, 4) <<
1, 0, 0, 0,
0, cos(alpha), -sin(alpha), 0,
0, sin(alpha), cos(alpha), 0,
0, 0, 0, 1);
// Translation matrix on the Z axis
Mat T = (Mat_<double>(4, 4) <<
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, dist,
0, 0, 0, 1);
// Camera Intrisecs matrix 3D -> 2D
Mat A2 = (Mat_<double>(3,4) <<
f, 0, w/2, 0,
0, f, h/2, 0,
0, 0, 1, 0);
Mat transfo = A2 * (T * (R * A1));
Mat source;
Mat destination;
warpPerspective(source, destination, transfo, source.size(), INTER_CUBIC | WARP_INVERSE_MAP);
我希望它可以帮到你,
于连
PS:我举例说明了从2D到3D的投影,但你可以直接使用transfo = T * R;