В настоящее время я пытаюсь реализовать преобразования с помощью 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
Любая помощь будет принята с благодарностью,
Спасибо