修复 cv::转换点从均匀错误
Fixing cv::convertPointsFromHomogeneous Error
我使用convertPointsFromHomogeneous
函数将齐次坐标(4D)转换为3D。
但是我得到一些错误:
OpenCV 错误:断言失败(n点>= 0) 在 cv::convertPointsFromHomogeneous,文件 fundam.cpp,第 879 行
请告诉我出了什么问题。
代码如下。
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);
convertPointsFromHomogeneous
的输入Mat
应该是N
通道Mat
(在您的例子中N=4
),类型为 CV_32F
或 CV_32S
。
相反,您传递的是类型为 CV_64F
的单通道Mat
。
您可以像这样更正代码:
cv::Mat1f Thomogeneous(4, 1);
Thomogeneous(0) = -70;
Thomogeneous(1) = -95;
Thomogeneous(2) = -120;
Thomogeneous(3) = 1;
// Reshape to 4 channel matrix
Mat Th = Thomogeneous.reshape(4);
cv::Mat T;
cv::convertPointsFromHomogeneous(Th, T);
另请注意,您可以使用Mat_<Tp>
(例如 Mat1f
,又名 Mat_<float>
),使代码不那么冗长。
相关文章:
- 错误的cv::face FacemarkLBF实例化
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- cv::namedWindow() 崩溃,分段错误
- 将 opencv 从 2.4.13 转换为 3.3.1 时由 cv::resize() 引起的运行错误
- OpenCV 分段错误(核心转储)在使用 cv::Mat::at 时
- cv::resize() 失败并出现访问冲突错误(由 NULL> 处的 <struct 引起)
- OpenCV(3.4.1) 错误:断言失败(变暗 <= 2 && step[0] > 0) in cv::Mat::locateROI
- OpenCV CV 查找单应断言错误计数器 = > 4
- 打开CV异常错误,尽管我的代码是正确的
- 错误:'create'不是 'cv::Tracker' 的成员
- OpenCV 错误:断言在 cv::Mat 行 522 中失败
- 如何消除ROS打开CV中的内存不足错误?
- 错误:(49) 在 Android 中使用 OpenCV 原生时未定义对'cv::Stitcher::createDefault(bool)'的引用
- 使用CV :: ML :: STATMODEL :: TRAIN使用KNN的OPENCV错误
- C++/openCV - 为什么显示图像会产生 Linux 分割错误?(打开CV错误?
- 找不到 gcc 编译错误 cv.h for Opencv
- 错误:“CV::鱼眼”尚未声明
- 编译错误 cv::gpu
- 错误cv::SURF::SURF(double,int,int,bool,bool)在OpenCV和c++中实现SURF