【发布时间】:2014-04-23 18:00:50
【问题描述】:
有人可以帮我,我们如何计算转换图像中关键点的新位置,关键点是在原始图像中检测到的。我正在使用opencv单应矩阵和warpPerspective来制作转换后的图像。
这是一个代码..
...
std::vector< Point2f > points1,points2;
for( int i = 0; i < matches1.size(); i++ )
{
points1.push_back( keypoints_input1[matches1[i].queryIdx ].pt );
points2.push_back( keypoints_input2[matches1[i].trainIdx ].pt );
}
/* Find the Homography Matrix for current and next frame*/
Mat H1 = findHomography( points2, points1, CV_RANSAC );
/* Use the Homography Matrix to warp the images*/
cv::Mat result1;
warpPerspective(input2, result1, H1, Size(input2.cols+150, input2.rows+150),
INTER_CUBIC);
...
}
现在我想计算结果1图像中points2的新位置。
例如在下面转换后的图像 中,我们知道角点。现在我想计算转换前关键点的新位置 {(x1,y1),(x2,y2),(x3,y3)...},我们如何计算它?
更新:opencv 'perspectiveTransform' 做了我想做的事。
【问题讨论】:
-
这是一个关于数学和变换的问题;不是关于编程......
-
@Chris Maes,计算机视觉是关于编程数学变换
-
好吧,你说得有道理,我的评论可能不够清楚。但这个问题显然是一个“如何做我的数学”问题,而不是一个程序问题,不是吗?
-
@ChrisMaes ,感谢您的评论,我真的不知道该怎么做,这就是我问的原因。我不认为向知道这件事的人询问有什么问题。
-
@MMH 我不想变得粗鲁。我理解您的问题,但您最好粘贴 5 行代码,说明如何包装图像以及卡在哪里;这更容易回答......我的意见也许
标签: c++ c opencv homography warp