Hi all !
I have a problem with the stereocalibrate function in python although calibrateCamera works well with the same structure of data (e.g. list of numpy arrays). The error is a system error : " new style getargs format but argument is not a tuple". My version of python is 3.5 and OpenCV is 3.2.0.dev.
I put my code below :
import os
import numpy as np
import cv2
pathDir='/home/amelie/Documents/these/donnees_ucon/calibration_170410/'
prefixCamera='cam'
imageExtension='png'
cameraNumber=3
referenceCamera=1
imageNumber=200
maxImageCalibration=100
xCornerNumber=11
yCornerNumber=7
criteria=(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
objP=np.zeros((xCornerNumber*yCornerNumber,3), np.float32)
objP[:,0:2] = np.mgrid[0:xCornerNumber,0:yCornerNumber].T.reshape(xCornerNumber*yCornerNumber,2)
objPoints = np.nan*np.ones((cameraNumber,imageNumber,xCornerNumber*yCornerNumber,3)) #3d point in real world space
imgPoints = np.nan*np.ones((cameraNumber,imageNumber,xCornerNumber*yCornerNumber,2)) #2d points in image plane.
validImages=np.zeros((imageNumber, cameraNumber),np.uint)
for camera in range(1,cameraNumber+1):
for image in range(1,imageNumber+1):
fname=pathDir+prefixCamera+str(camera)+'_'+str(image)+'.'+imageExtension
if os.path.isfile(fname):
print(prefixCamera+str(camera)+'_'+str(image)+'.'+imageExtension)
img = cv2.imread(fname)
gray=img[:,:,1] #Study on the green channel of the image
# Find the chess board corners
found, corners = cv2.findChessboardCorners(gray, (xCornerNumber,yCornerNumber),None)
if found == True:
corners=corners.reshape(xCornerNumber*yCornerNumber,2)
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
# Draw and display the corners
img = cv2.drawChessboardCorners(img, xCornerNumber,yCornerNumber),corners2,found)
imgPoints[camera-1,image-1,:,:]=corners2
objPoints[camera-1,image-1,:,:]=objP
validImages[image-1,camera-1]=1
hist=np.histogram(gray,255,(0,255))
else:
hist=np.histogram(gray,255,(0,255))
objPointsCameras=[]
imgPointsCameras=[]
projErrorCameras=[]
matrixCameras=[]
distortCoeffCameras=[]
rotVectorsCameras=[]
trVectorsCameras=[]
validImagesIndex=np.where(np.prod(validImages,axis=1)==1)
for camera in range(1,cameraNumber+1):
validImgPointsCam=imgPoints[camera-1,validImagesIndex[0],:,:]
validObjPointsCam=objPoints[camera-1,validImagesIndex[0],:,:]
print(len(validImgPointsCam))
index=0
imgPointsCamList=[]
objPointsCamList=[]
while index
↧