我正在使用 OpenCV 记录来自 Kinect 和其他相机的点云。要将点云同步在一起,我想使用 3D 校准装置和 cv::estimateAffine3D()。但是,当我尝试使用该函数时,OpenCV 会向我抛出这个奇怪的异常:
OpenCV Exception: C:\Tools\opencv\modules\core\src\matrix.cpp:1466:
error: (-215) mtype == type0 || (CV_MAT_CN(mtype) == CV_MAT_CN(type0) &&
((1 << type0) & fixedDepthMask) != 0)
我无法弄清楚异常文本想告诉我什么,谷歌没有给出相关结果,也许其他人在这件事上比我知道的更多。谢谢!
编辑:这是我对函数的调用:
cv::Mat affine;
std::vector<cv::Point> inliers;
cv::estimateAffine3D(camPoints,objPoints,affine,inliers,5.0,0.96);
其中 camPoints 和 objPoints 都是std::vector<cv::Point3f>
类型,camPoints 是 findChessboardCorners 返回的角(重新投影到 3D 相机空间),而 objPoints 只是表示对象空间中相同角的向量,在这种情况下,它的内容如下所示:(0,0,0 ),(40,0,0),(80,0,0),...,(0,40,0),(40,40,0),(80,40,0)...(0,200 ,0),(40,200,0),(80,200,0)