有没有能够在C++中返回3x3矩阵透视投影的函数?
Matrix Perspective()
{
Matrix m(0, 0, 0); // Creates identity matrix
// Perspective projection formulas here
return m;
}
有没有能够在C++中返回3x3矩阵透视投影的函数?
Matrix Perspective()
{
Matrix m(0, 0, 0); // Creates identity matrix
// Perspective projection formulas here
return m;
}
这里有一个返回4x4矩阵的函数,使用OpenGL gluPerspective man page中的公式:
static void my_PerspectiveFOV(double fov, double aspect, double near, double far, double* mret) { double D2R = M_PI / 180.0; double yScale = 1.0 / tan(D2R * fov / 2); double xScale = yScale / aspect; double nearmfar = near - far; double m[] = { xScale, 0, 0, 0, 0, yScale, 0, 0, 0, 0, (far + near) / nearmfar, -1, 0, 0, 2*far*near / nearmfar, 0 }; memcpy(mret, m, sizeof(double)*16); }
使用OpenCV 2.0,你几乎可以实现你的伪代码。
有一个矩阵类Mat
和透视变换的perspectiveTransform
。而Mat::eye
则返回一个单位矩阵。
我链接的文档是针对OpenCV 1.1(使用C语言),但是从手册中很容易推断出在OpenCV 2.0(使用Mat
类)中正确的用法。