我正在使用OpenCV计算的单应矩阵。我目前使用下面的函数来使用这个单应矩阵转换点。尽管这个函数能完成我需要的任务,但是我不知道它是如何工作的。
有人可以解释一下代码的最后三行的逻辑/理论吗?我知道这个函数可以转换点x,y,但是我不清楚它为什么有效:
为什么以这种方式计算
非常感谢您的帮助 :)
有人可以解释一下代码的最后三行的逻辑/理论吗?我知道这个函数可以转换点x,y,但是我不清楚它为什么有效:
为什么以这种方式计算
Z
,px
和py
,h
中的元素代表什么?非常感谢您的帮助 :)
double h[9];
homography = cvMat(3, 3, CV_64F, h);
CvMat ps1 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points1);
CvMat ps2 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points2);
cvFindHomography(&ps1, &ps2, &homography, 0);
...
// This is the part I don't fully understand
double x = 10.0;
double y = 10.0;
double Z = 1./(h[6]*x + h[7]*y + h[8]);
px = (int)((h[0]*x + h[1]*y + h[2])*Z);
py = (int)((h[3]*x + h[4]*y + h[5])*Z);