繁体   English   中英

立体视觉鱼眼镜头校准

[英]stereo vision fish eye camera calibration

首先,我尝试使用OpencvPython进行fish-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)

它抛出一个错误:

追溯(最近一次通话最近):文件“ fisheye_calib1.py”,行177,在imageSize中)cv2.error:OpenCV(4.0.0-pre)/ home / compute / OpenCV-tmp / opencv-3 / modules / core / src / arithm.cpp:683:错误:(-5:错误参数)当加/减/乘/除函数中的输入数组具有不同类型时,必须在函数“ arithm_op”中明确指定输出数组类型

由于我是OpenCV新手。 我真的很困惑,应该采取什么步骤来避免此错误。

欢迎使用Stack Overflow!

似乎您发送给stereoCalibrate的数组不是同一类型。 例如,在有人为相同的错误消息而苦苦挣扎的情况下,请参阅此问题 在Google快速搜索您的错误代码后,我找到了它。

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

如果您仍在挣扎中,则可以在stereoCalibrate之前stereoCalibrate执行以下操作:

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

我希望这有帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM