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)

例外テキストが私に伝えたいことを理解できず、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)

4

1 に答える 1

0

どうやら、チェス盤の角を再投影する機能に問題があったようです (ただし、以前は正常に機能していました)。どうやら、この例外は、入力ポイントに何かが正しくないことを示しているようです。私の場合、すべての camPoints は (0,0,0) でした。

于 2013-08-08T12:22:25.033 に答える