本文主要记录基于环视鱼眼相机的全景拼接过程中遇到的问题及其解决思路
代码来源:https://github.com/Leooncode/surround-view-system-introduction/blob/master/doc/doc.md
1、针对多个鱼眼相机连接问题
鱼眼相机为USB摄像头,与网络摄像头采集方式不同,具体修改为:
对于USB摄像头无需使用gst,gst是针对csi摄像头的,因此直接调用cap读取即可。
2、bug解决:cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\calib3d\src\fisheye.cpp:1488: error: (-3:Internal error) CALIB_CHECK_COND - Ill-conditioned matrix for input array 0 in function ‘cv::internal::CalibrateExtrinsics’
cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\calib3d\src\fisheye.cpp:1488: error: (-3:Internal error) CALIB_CHECK_COND - Ill-conditioned matrix for input array 2 in function ‘cv::internal::CalibrateExtrinsics’
该问题主要是棋盘格标定点远多于预设的点,导致计算雅可比方程时出现冗余。
解决方法1:最大限度的识别标定板上的角点,除了最外围的棋盘格,尽量让内部点全部被识别到即可。
解决方法2:
禁用掉calibration_flags,设置一个flags=0替代它即可解决。
解决方法3:
自己代码里大概率有CALIB_CHECK_COND这个限制flag,直接删除该flag即可(亲测有效,推荐)!