2

我正在使用 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)

4

1 回答 1

0

显然,给我重新投影的棋盘角的功能是错误的(但之前工作正常)。显然,这个异常想说的是输入点不太对劲,在我的例子中,所有的 camPoints 都是 (0,0,0)。

于 2013-08-08T12:22:25.033 回答