python - OpenCV - 校准鱼眼镜头误差(病态矩阵)

标签 python opencv

我正在按照这些说明尝试校准鱼眼镜头 https://medium.com/@kennethjiang/calibrate-fisheye-lens-using-opencv-333b05afa0b0 您可以在其中找到我用于校准部分的完整代码。

我到达了这一点:

N_OK = len(objpoints)
K = np.zeros((3, 3))
D = np.zeros((4, 1))
rvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
tvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]  
rms, _, _, _, _ = \
    cv2.fisheye.calibrate(
        objpoints,
        imgpoints,
        gray.shape[::-1],
        K,
        D,
        rvecs,
        tvecs,
        calibration_flags,
        (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-3)
    )
print("Found " + str(N_OK) + " valid images for calibration")
print("DIM=" + str(_img_shape[::-1]))
print("K=np.array(" + str(K.tolist()) + ")")
print("D=np.array(" + str(D.tolist()) + ")")

我收到这个错误:

Traceback (most recent call last)
<ipython-input-10-deaca9981fe4> in <module>()
     13         tvecs,
     14         calibration_flags,
---> 15         (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-3)
     16     )
     17 print("Found " + str(N_OK) + " valid images for calibration")

error: C:\ci\opencv_1512688052760\work\modules\calib3d\src\fisheye.cpp:1414: 
error: (-3) CALIB_CHECK_COND - Ill-conditioned matrix for input array 0 in 
function cv::internal::CalibrateExtrinsics

我不明白这是怎么回事,我在互联网上只能找到很少的信息,有没有人遇到过类似的事情并且知道如何解决这个问题?

谢谢

这些是我正在使用的棋盘的图像:

最佳答案

我认为这是因为您的变量 calibration_flags 设置了 CALIB_CHECK_COND。 尝试禁用此标志。没有它,我就能够不扭曲你的图像(见下面的链接)。

我不确定这个检查的目的是什么(documentation 不是很明确)。即使棋盘可见并被检测到,此标志也会拒绝我的 gopro hero 3 的某些图像¹。在我的例子中,20 张图片中有一张没有通过这个测试。此图像的棋盘靠近左边框。

¹ 在 OpenCV 版本中 >= 3.4.1 error message告诉你哪个图像没有通过测试

关于python - OpenCV - 校准鱼眼镜头误差(病态矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038464/

相关文章:

python - 使用 python 正则表达式在 HTML 中查找随机句子

python - 在python中连接图像

python - 如何在 Docker、Ubuntu 中运行我的脚本 python openCV

python - 在Python中使用相同的键在字典中查找不同的值

python - 如何访问 Jinja2 中的部分列表

Python 关闭子进程

python - 如何按列值(字符串)过滤 DataFrame 由 const 字符串包含

c++ - 具有概率估计的多类图像分类

python - 如何使用opencv + python检测不同角度的人脸

opencv - 在png文件中找到汇编代码是否正常?