gpt4 book ai didi

c++ - 使用 OpenCv fisheye::calibrate() 函数时出现段错误

转载 作者:行者123 更新时间:2023-11-28 06:11:23 26 4
gpt4 key购买 nike

我正在使用 OpenCv 2.4.10 (C++ API) 中的 fisheye::calibrate() 函数来校准鱼眼相机。当我对针孔相机使用标准 cv::calibrateCamera() 函数时,一切正常。如果我使用具有相同输入(这两个函数具有相同签名)的鱼眼对应物(即 fisheye::calibrate()),我会收到段错误。这是一个已知的问题?可能是什么问题?

最佳答案

看起来自提交以来已经有一段时间了,但是当我偶然发现这个试图解决同样的问题时,我会把我找到的解决方案放在这里以帮助后续的人。

看起来这个函数有一个错误,这意味着它无法处理输入和输出数组的 Mat 参数。当我使用以下签名时,它开始工作。

double cv::fisheye::calibrate (vector<vector<Point3f> > objectPoints, vector<vector<Point2f> > imagePoints, const Size &image_size, Matx33d K, Vec4d D, vector<Vec3d> rvecs, vector<Vec3d> tvecs, int flags=0, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON))

幸运的是 Mat 类型有一些很好的方法来进行转换,所以在我的例子中(无论如何我已经有正确格式的 imagePoints)我能够做到:

distCoeffs = Mat::zeros(4, 1, CV_64F);
Matx33d tempCameraMatrix = cameraMatrix;
Vec4d tempDistCoeffs = distCoeffs;

我希望能对外面的人有所帮助!

关于c++ - 使用 OpenCv fisheye::calibrate() 函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com