使用cv2.fisheye.calibrate标定时出现的错误:(-215:Assertion failed)

用python+opencv对大广角镜头(实时)标定时出现如下错误,
错误如下:

Traceback (most recent call last):
  File "E:/workspace-python/StereoSystem/calibrate/SingleCalibrate.py", line 134, in <module>
    mtx, dist = calibrate_single(1, 27, 9, 6, fileName)
  File "E:/workspace-python/StereoSystem/calibrate/SingleCalibrate.py", line 81, in calibrate_single
    (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6)
cv2.error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\calib3d\src\fisheye.cpp:712: error: (-215:Assertion failed) objectPoints.type() == (((5) & ((1 << 3) - 1)) + (((3)-1) << 3)) || objectPoints.type() == (((6) & ((1 << 3) - 1)) + (((3)-1) << 3)) in function 'cv::fisheye::calibrate'

错误之处:

 # 世界坐标系中的棋盘格点
 objp = np.zeros(( Nx_cor * Ny_cor, 3), np.float32)
 objp[ :, :2] = np.mgrid[0:Nx_cor, 0:Ny_cor].T.reshape(-1, 2)

处理方案:

 objp = np.zeros((1, Nx_cor * Ny_cor, 3), np.float32)
 objp[0, :, :2] = np.mgrid[0:Nx_cor, 0:Ny_cor].T.reshape(-1, 2)

处理后可成功获取广角/鱼眼镜头的内参:
在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
cv2.fisheye.calibrate函数是OpenCV中用于鱼眼相机标定的函数。该函数通过对多组输入图像和对应的物理空间坐标点进行处理,得到相机的内外参数,以及畸变系数。 该函数的语法如下: ``` retval, K, D, rvecs, tvecs = cv2.fisheye.calibrate(objectPoints, imagePoints, imageSize, K, D, rvecs, tvecs, flags, criteria) ``` 其中参数含义如下: - `objectPoints`:物理空间中的坐标点,是一个由N个3D点组成的列表,每个3D点是一个numpy数组(x,y,z)。 - `imagePoints`:图像中对应的2D坐标点,是一个由N个2D点组成的列表,每个2D点是一个numpy数组(x,y)。 - `imageSize`:输入图像的大小,是一个二元组(width, height)。 - `K`:相机内参数矩阵,是一个3x3的numpy数组。 - `D`:畸变系数,是一个1维numpy数组,包含4个或5个参数。 - `rvecs`:旋转向量,是一个由N个3D向量组成的列表。 - `tvecs`:平移向量,是一个由N个3D向量组成的列表。 - `flags`:标定选项,可以是以下值的组合: - `cv2.fisheye.CALIB_RECOMPUTE_EXTRINSIC`:重新计算外部参数 - `cv2.fisheye.CALIB_CHECK_COND`:检查矩阵条件数,确保它们足够好 - `cv2.fisheye.CALIB_FIX_SKEW`:固定鱼眼相机的skew参数为0 - `criteria`:终止标准,指定迭代优化算法的终止条件。 该函数返回以下值: - `retval`:标定的重投影误差,表示图像点与相机坐标系中的点之间的距离,以像素为单位。 - `K`:相机内参数矩阵,是一个3x3的numpy数组。 - `D`:畸变系数,是一个1维numpy数组,包含4个或5个参数。 - `rvecs`:旋转向量,是一个由N个3D向量组成的列表。 - `tvecs`:平移向量,是一个由N个3D向量组成的列表。 使用该函数需要先准备好一组由3D点和2D点组成的数据对,可以通过OpenCV的棋盘格标定工具获取。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值