问题描述
我正在为将用于抓取的机械臂进行相机校准。请注意,我在单独校准每个相机和立体校准期间没有使用任何标志。这是进行并获得准确结果的正确方法吗?谢谢 代码如下:
import numpy as np
import cv2
import glob
# termination criteria
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,30,0.001)
# prepare object points,like (0,0),(1,(2,0) ....,(6,5,0)
objp = np.zeros((12*12,3),np.float32)
objp[:,:2] = np.mgrid[0:12,0:12].T.reshape(-1,2)*26 #multiply by length of squares
# Arrays to store object points and image points from all the images.
objpointsL = [] # 3d point in real world space
imgpointsL = [] # 2d points in image plane.
objpointsR = []
imgpointsR = []
images = glob.glob('Imageleft*tif')
for fname in images:
img = cv2.imread(fname)
grayL = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Find the chess board corners
ret,cornersL = cv2.findChessboardCorners(grayL,(12,12),None)
# If found,add object points,image points (after refining them)
if ret == True:
objpointsL.append(objp)
cv2.cornerSubPix(grayL,cornersL,(11,11),(-1,-1),criteria)
imgpointsL.append(cornersL)
img = cv2.drawChessboardCorners(img,ret)
cv2.imshow('imgL',img)
cv2.waitKey(500)
images = glob.glob('Imageright*.tif')
for fname in images:
img = cv2.imread(fname)
grayR = cv2.cvtColor(img,cornersR = cv2.findChessboardCorners(grayR,None)
# If found,image points (after refining them)
if ret == True:
objpointsR.append(objp)
cv2.cornerSubPix(grayR,cornersR,criteria)
imgpointsR.append(cornersR)
img = cv2.drawChessboardCorners(img,ret)
cv2.imshow('imgR',img)
cv2.waitKey(500)
ret1,mtx1,dist1,rvecs1,tvecs1= cv2.calibrateCamera(objpointsL,imgpointsL,grayL.shape[::-1],None,None)
ret2,mtx2,dist2,rvecs2,tvecs2= cv2.calibrateCamera(objpointsR,imgpointsR,grayR.shape[::-1],None)
retval,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,R,T,E,F = cv2.stereoCalibrate(objpointsL,None)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)