基本行列に1列の行列(2D同次座標)を掛けようとしていますが、次のエラーが発生します。CvException occurred - OpenCV: src1.size == dst.size && src1.channels() == dst.channels()
コードは次のようになります。
IntPtr fundamentalMatrix = CvInvoke.cvCreateMat(3, 3, MAT_DEPTH.CV_32F);
[... finding the fundamental matrix ...]
IntPtr cam1PointRef = CvInvoke.cvCreateMat(3, 1, MAT_DEPTH.CV_32F);
IntPtr cam2PointRef = CvInvoke.cvCreateMat(3, 1, MAT_DEPTH.CV_32F);
//cam1Point is known
CvInvoke.cvSet2D(cam1PointRef, 0, 0, new MCvScalar(cam1Point.X));
CvInvoke.cvSet2D(cam1PointRef, 1, 0, new MCvScalar(cam1Point.Y));
CvInvoke.cvSet2D(cam1PointRef, 2, 0, new MCvScalar(1));
CvInvoke.cvMul(fundamentalMatrix, cam1PointRef, cam2PointRef, 1);
Matrix<float> cam2PointMat = new Matrix<float>(3, 1, cam2PointRef);
PointF cam2Point = new PointF();
cam2Point.X = cam2PointMat[0, 0] / cam2PointMat[0, 2];
cam2Point.Y = cam2PointMat[0, 1] / cam2PointMat[0, 2];
このように乗算の順序を逆にするCvInvoke.cvMul(cam1PointRef, fundamentalMatrix, cam2PointRef, 1);
と、別の例外が発生します。
OpenCV: The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array'
私が間違っているのは何ですか?コアレスポンデントポイントを取得するために、(3 x 3)行列と(3 x 1)行列を乗算できないのはなぜですか?