【问题标题】:stereo vision fish eye camera calibration立体视觉鱼眼相机校准
【发布时间】:2019-01-30 16:28:54
【问题描述】:

我正在尝试使用OpencvPythonfish-eye stereo calibration,起初我已经完成了单相机的立体校准

print("Calibrating left fisheye camera...")
rms, _, _, _, _ = cv2.fisheye.calibrate(objectPoints,leftImagePoints,imageSize, K_left,D_left,R,T,flags,(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6))
print("calibrating right fisheye camera...")
rms, _, _, _, _ = cv2.fisheye.calibrate(objectPoints,rightImagePoints, imageSize,K_right,D_right,R,T,flags, (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6))

但在下一步我尝试做stereofisheye calibration时:

print("calibrating both fisheye cameras together...")
(rms,K1, D1, K2, D2, R, T) = cv2.fisheye.stereoCalibrate(
    objectPoints,
    leftImagePoints,
    rightImagePoints,
    K_left,
    D_left,
    K_right,
    D_right,
    imageSize)

它正在抛出一个错误:

Traceback(最近一次调用最后一次): 文件“fisheye_calib1.py”,第 177 行,在 图片尺寸) cv2.error: OpenCV(4.0.0-pre) /home/compute/OpenCV-tmp/opencv- 3/modules/core/src/arithm.cpp:683: error: (-5:Bad argument) 当加/减/乘/除函数中的输入数组有 不同的类型,输出数组类型必须在 函数'arithm_op'

因为我是 OpenCV 的新手。我真的很困惑我应该采取什么步骤来避免这个错误。

【问题讨论】:

    标签: python opencv camera-calibration fisheye


    【解决方案1】:

    欢迎来到 Stack Overflow!

    您发送给stereoCalibrate 的数组似乎不是同一类型。例如,请参阅此 question,其中有人遇到相同的错误消息。我在 Google 上快速搜索了您的错误代码后找到了它。

    所以我的猜测是,解决方法是确保所有你的矩阵都是相同类型的。确保以相同的方式初始化它们。例如,它们是创建为列表 ([4,4,5]) 还是创建为 Numpy-arrays(OpenCV 的典型输出)?这两个不能一起工作。

    如果你还在苦苦挣扎,你可以在stereoCalibrate 之前强制它:

    objectPoints = numpy.array(K_left, np.float)
    ...
    K_left = ... # Do the above operation on each one
    ...
    D_right = ...
    

    我希望这会有所帮助!

    注意:对于我的解决方案,您需要导入 Numpy

    【讨论】:

    • 我看到你问了另一个问题,这意味着你修复了你在这里问的错误。请发布您的问题的答案,即“接受为答案”的适当答案,以便其他人知道如何解决类似问题。
    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 2018-04-15
    • 2020-10-16
    • 1970-01-01
    • 2021-12-30
    • 2018-10-12
    • 2014-07-30
    • 2016-05-20
    相关资源
    最近更新 更多