gpt4 book ai didi

opencv - 使用 OpenCV 平移和旋转 3D 图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:28 24 4
gpt4 key购买 nike

给定一个 3 x 3 旋转矩阵 R 和一个 3 x 1 平移矩阵 T,我想知道如何将 T 和 R 矩阵乘以图像?

假设 Iplimage img 是 640 x 480。

我想做的是R*(T*img)

我曾考虑使用 cvGemm,但没有成功。

最佳答案

您正在搜索的函数可能是 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;

关于opencv - 使用 OpenCV 平移和旋转 3D 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com