1

(OpenCvSharp を介して) OpenCV から solvePnP を使用しようとしていますが、理解できない例外が発生します。

An unhandled exception of type 'OpenCvSharp.OpenCVException' occurred in OpenCvSharp.dll
Additional information: src.size == dst.size && src.channels() == dst.channels()

いくつかの検索の後、convert.cpp の cvConvertScale からのものであることがわかりました。

これが私がそれを使用する方法です:

var objectPoints = new OpenCvSharp.CPlusPlus.Point3f[4] { o1, o2, o3, o4 };
var imagePoints = new OpenCvSharp.CPlusPlus.Point2f[4] { i1, i2, i3, i4 };
var intrinsic = new double[3, 3] { { d1, d2, d3 }, { d4, d5, d6}, { d7, d8, d9 } };

double[] rvec, tvec;

OpenCvSharp.CPlusPlus.Cv2.SolvePnP(objectPoints,
                                   imagePoints,
                                   intrinsic,
                                   null, out rvec, out tvec);

この例外を正しく理解していれば、並べ替えの変換が発生し、ソースと宛先のマトリックスが同じサイズまたは同じ数のチャネルを持っていないことを意味します。しかし、両方のポイントのリストは同じサイズです。私のカメラ マトリックスは 3x3 で、これで問題ありません。理解できません。

誰かがこれに光を当てることができますか?

4

1 に答える 1