问题描述
我正在尝试校准 200 度 FOV 鱼眼相机,使用 cv2.fisheye 图像在未失真的情况下裁剪过多。 当我尝试使用 cv2.omnidir 进行校准时,出现以下错误。
cv2.error: OpenCV(4.5.1) /tmp/pip-req-build-n_alixql/opencv/modules/core/src/matrix_wrap.cpp:1146: error: (-215:Assertion Failed) !fixedSize( ) || ((Mat*)obj)->size.operator()() == _sz in function 'create'
这是我如何使用这个命令
k = np.zeros((3,3),dtype=np.float32)
d = np.zeros((4,1),dtype=np.float32)
dims = gray.shape[::-1]
rvecs = [np.zeros((1,1,dtype=np.float32) for _ in range(len(obj_points))]
tvecs = [np.zeros((1,dtype=np.float32) for _ in range(len(obj_points))]
rms,_,_ = cv2.omnidir.calibrate(
objectPoints=np.array(obj_points,dtype=np.float32),imagePoints=np.array(img_points,size=dims,K=k,xi=np.array([],D=d,rvecs=rvecs,tvecs=tvecs,flags=cv2.omnidir.CALIB_FIX_SKEW + cv2.omnidir.CALIB_USE_GUESS,#cv2.omnidir.CALIB_USE_GUESS+ cv2.omnidir.CALIB_FIX_SKEW,criteria=(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,30,1e-6))
我将不胜感激。 谢谢
解决方法
使用此命令解决断言问题
rms,k,xi,d,rvecs,tvecs,idx = cv2.omnidir.calibrate(
objectPoints=obj_points,imagePoints=img_points,size=dims,K=None,xi=None,D=None,flags=cv2.omnidir.CALIB_USE_GUESS + cv2.omnidir.CALIB_FIX_SKEW + cv2.omnidir.CALIB_FIX_CENTER,criteria=subpix_criteria)
我期望 cv2.omnidir.calibrate 与 cv2.fisheye.calibrate 具有相同的语法。