我正在使用OpenCV来记录Kinect和其他相机的pointcloud。要将pointcloud同步到一起,我想使用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)
我无法弄清楚异常文本想要告诉我什么,Google没有给出任何相关结果,也许别人在这件事上比我更了解。谢谢!
编辑:这是我对函数的调用:
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)
答案 0 :(得分:0)
显然,给我重新投射的棋盘角落的功能是错误的(但之前工作正常)。显然,这个例外想要说输入点的东西不太正确,在我的例子中,所有的camPoints都是(0,0,0)。