我目前正在尝试通过使用 EMGU 来实现转换,尽管我似乎无法理解它是如何工作的(而且似乎没有任何在线示例)。
我有我的图像,我希望从(和到)转换 4 个点,虽然我不知道还需要什么其他变量,但它要求 'mapMat' ?
这是我到目前为止所拥有的:
float[,] tmp = {
{bottomLeft.x, bottomLeft.y},
{topLeft.x, topLeft.y},
{topRight.x, topRight.y},
{bottomRight.x, bottomRight.y}
};
Matrix<float> sourceMat = new Matrix<float>(tmp);
float[,] target = {
{0, height},
{0, 0},
{width, 0},
{width, height}
};
Matrix<float> targetMat = new Matrix<float>(target);
//mapMat = just a placeholder matrix?
Matrix<float> mapMat = new Matrix<float>(target);
CvInvoke.cvGetAffineTransform(sourceMat.Ptr, targetMat.Ptr, mapMat.Ptr);
然而这不起作用。我也不确定仿射变换是否是最理想的解决方案?我也读过一些关于 FindHomography 和透视变换的东西,但不确定它们是否适用于这里。
我希望实现的目标转换是这样的:
http://img832.imageshack.us/img832/5157/targettransform.png
任何帮助将不胜感激,
谢谢