如何使用OpenCV将同类点转换为非均匀点(在C ++中)

时间:2015-06-18 08:08:07

标签: c++ opencv homogenous-transformation

我想转换积分。目前我的代码看起来像这样:

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

但是我总是得到一个关于内存位置的异常错误。所以,我认为我的输入类型是错误的,尽管OpenCV documentation说:

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

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

我在调试模式下运行代码。调用函数时,参数看起来确实很好。然后在输入函数后立即出现错误,但我无法弄清楚,因为我无法进入功能代码本身。有没有人知道为什么这不起作用?感谢。

1 个答案:

答案 0 :(得分: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]