1

我想转换积分。目前我的代码如下所示:

std::vector<cv::Point3d> homCamPoints(4);
// some assignments to homCamPoints
std::vector<cv::Point2d> inhomCamPoints(4);
convertPointsFromHomogeneous(homCamPoints, inhomCamPoints);

但我总是收到有关内存位置的异常错误。所以,我假设我的输入类型是错误的,尽管OpenCV 文档说:

  • src - N 维点的输入向量。
  • dst – N-1 维点的输出向量。

听起来我的输入类型没问题。但是在互联网上我只找到了使用cv::Mat类型的示例,但由于时间问题,我想避免在那个阶段进行重组。

我在调试模式下运行我的代码。调用函数时,参数似乎真的很好。然后在输入函数后立即发生错误,但我无法准确弄清楚,因为我无法进入函数代码本身。有谁知道为什么这不起作用?谢谢。

4

1 回答 1

1

我试过这个:

std::vector<cv::Point3d> homCamPoints(4, cv::Point3d(0,0,0));
homCamPoints[0] = cv::Point3d(0,0,0);
homCamPoints[1] = cv::Point3d(1,1,1);
homCamPoints[2] = cv::Point3d(-1,-1,-1);
homCamPoints[3] = cv::Point3d(2,2,2);

std::vector<cv::Point2d> inhomCamPoints(4);

cv::convertPointsFromHomogeneous(homCamPoints, inhomCamPoints);

它毫无例外地工作。也许您的问题在您的代码中的其他地方。inhomCamPoints 是:
[0, 0], [1, 1], [1, 1], [1, 1]

于 2015-06-18T09:11:08.040 回答