我正在尝试使用 OpenCV 中的 solvePnP(通过 OpenCvSharp),但我遇到了一个我不明白的异常。
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,应该没问题。我不明白。
有人可以对此有所了解吗?