gpt4 book ai didi

c++ - 计算关键点的新位置

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:46 25 4
gpt4 key购买 nike

有人能帮我吗,我们如何计算转换图像中关键点的新位置,关键点是在原始图像中检测到的。我正在使用 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);
...
}

现在我想计算 points2 在 result1 图像中的新位置。

例如在下面的转换图像中 ,我们知道角点。现在我想计算转换前关键点的新位置 {(x1,y1),(x2,y2),(x3,y3)...},我们如何计算它?

更新:opencv 'perspectiveTransform' 做了我想做的事。

最佳答案

我们称 I' 使用单应 H 扭曲图像 I 获得的图像。

如果你在原始图像中提取关键点 mi = (xi, yi, 1) I,你可以使用单应变换得到变形图像I'中的关键点m'i:S * m'i = H * mi。注意比例因子 S,如果您想要以像素为单位的关键点坐标,您必须缩放 m'i 以便第三个元素为 1 .

如果您想了解比例因子的来源,请查看 Homogeneous Coordinates .

此外,还有一个 OpenCV 函数可将此转换应用于点数组:perspectiveTransform( documentation )。

关于c++ - 计算关键点的新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22472871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com