我使用convertPointsFromHomogeneous函数将齐次坐标(4D)转换为 3D。
但我得到了一些错误:
OpenCV 错误:在 cv::convertPointsFromHomogeneous,文件fundam.cpp,第 879 行中,断言失败(npoints >= 0)
请告诉我出了什么问题。
代码如下。
cv::Mat Thomogeneous(4,1,cv::DataType<double>::type); // translation vector
Thomogeneous.at<double>(0,0) = -70;
Thomogeneous.at<double>(1,0) = -95;
Thomogeneous.at<double>(2,0) = -120;
Thomogeneous.at<double>(3,0) = 1;
cv::Mat T(3,1,cv::DataType<double>::type); // translation vector
cv::convertPointsFromHomogeneous(Thomogeneous, T);
Run Code Online (Sandbox Code Playgroud) 这是否只是为了向后兼容,对于已经使用OpenCV 2进行了多年开发,然后又想使用OpenCV 3而不需要重写所有旧代码的人?还是这与OpenCV 3的创建者选择的基本设计决策有关?例如,当我查找OpenCV 3的未读示例时,它们具有#include "opencv2/imgproc.hpp"。这仅仅是您在OpenCV 3中引用某些文件/功能的方式,还是因为许多人都喜欢旧的语法/样式(而不是各种操作)而有很多人不使用的“ OpenCV 3方式”?