我想转换积分。目前我的代码看起来像这样:
std::vector<cv::Point3d> homCamPoints(4);
// some assignments to homCamPoints
std::vector<cv::Point2d> inhomCamPoints(4);
convertPointsFromHomogeneous(homCamPoints, inhomCamPoints);
但是我总是得到一个关于内存位置的异常错误。所以,我认为我的输入类型是错误的,尽管OpenCV documentation说:
听起来我的输入类型还可以。但是在互联网上我只找到了使用cv::Mat
类型的示例,但由于时间问题,我希望避免在那个阶段进行重组。
我在调试模式下运行代码。调用函数时,参数看起来确实很好。然后在输入函数后立即出现错误,但我无法弄清楚,因为我无法进入功能代码本身。有没有人知道为什么这不起作用?感谢。
答案 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]