我使用fisheye::calibrate( )函数来获取相机的内部参数,这样我就得到了相机矩阵,但失真矩阵为空。
cv::Matx33d cameraMatrix;
cv::Vec4d distCoeffs;
std::vector<cv::Vec3d> R;
std::vector<cv::Vec3d> T;
int flag = 0;
//flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC;
//flag |= cv::fisheye::CALIB_CHECK_COND;
//flag |= cv::fisheye::CALIB_FIX_SKEW;
rms = cv::fisheye::calibrate(objpoints, imgpoints, imgSize,cameraMatrix, distCoeffs, R, T,flag, cv::TermCriteria(3, 20, 1e-6));这是我在上面的代码片段中得到的输出。
**cameraMatrix : [407.4366543152521, 0, 479.5;
0, 407.4366543152521, 639.5;
0, 0, 1]
distCoeffs : [0, 0, 0, 0]**不知道为什么我得到的失真矩阵是零值。
发布于 2020-12-09 06:28:36
我也有这个问题。这是OpenCV的鱼眼校准的一个已知问题。
https://github.com/DavidTorresOcana/image_pipeline/issues/1
https://github.com/opencv/opencv/issues/7008
出现在图像角落中的图像对应关系将导致校准过程静默失败。您可以添加标志fisheye::CALIB_CHECK_COND,它会在出现这种情况时抛出错误(但不会跳过有问题的图像或修复底层问题)。
https://stackoverflow.com/questions/62265781
复制相似问题