gpt4 book ai didi

c++ - 为什么 findHomography 返回错误结果?

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

我让用户在两张图片上选择 5 个点,它们的大小不一样(也许这就是问题所在)。当用户在任意图像上选择一个点时,我将 Point2f 推到一个专用于该特定图像的 vector 。

所以在一个实例中我有以下数据:

1. Image 2 at x: 607, and y: 286
2. Image 2 at x: 750, and y: 367
3. Image 2 at x: 527, and y: 353
4. Image 2 at x: 752, and y: 469
5. Image 2 at x: 584, and y: 482

--

1. Image 1 at x: 301, and y: 343
2. Image 1 at x: 440, and y: 328
3. Image 1 at x: 275, and y: 472
4. Image 1 at x: 478, and y: 457
5. Image 1 at x: 389, and y: 597

然而 findHomohraphy 返回

[0, 0, 0;

0, 0, 0;

0, 0, 0]

这就是我的函数在获得 2 个具有 4 个点的 vector 后所做的事情。

Mat tranform( std::vector<cv::Point2f> src, std::vector<cv::Point2f> dst) {
transMatrix = findHomography(src, dst, CV_RANSAC);
std::cout << transMatrix << std::endl;
return transMatrix;
}

我还尝试将 findHomohraphy 的方法参数从 0 更改为 CV_RANSAC

我正在进一步调试,但在打印 Point2f vector 时遇到了问题。也许我没有正确分配它

这就是我目前在图像窗口回调函数中所做的事情。

imgOnePoints.assign(imgOneIndex, Point2f(x,y));

最佳答案

事实证明我确实没有正确分配 vector

我通过使用 push_back 实现赋值来修复它

imgOnePoints.push_back(Point2f(x,y));

现在我得到以下结果

[9.160730442076495, -1.849442562331516, -180.7111392985398;
4.977742556341154, 2.013216209765684, -1267.475935610038;
0.007750660030394876, -0.0003148605099947704, 0.9999999999999999]

关于c++ - 为什么 findHomography 返回错误结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26382861/

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