[英]stereo vision fish eye camera calibration
首先,我尝试使用Opencv
和Python
进行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.