2016-07-26 4 views
1

Je veux trouver la constante d'étalonnage de la caméra avec le code ci-dessous. Cependant, j'ai eu un message d'erreur que je ne connais pas. Aidez-moi, s'il vous plaît.Comment puis-je trouver la constante d'étalonnage de la caméra open-cv en python, OpenCV Erreur: Échec de l'assertion (nimages> 0) dans cv :: calibrateCamera

import cv2 
import numpy as np 
import glob[enter image description here][1] 

# termination criteria 
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) 

# 7*7 chess board, prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0) 
object_point = np.zeros((7*7, 3), np.float32) 
object_point[:, :2] = np.mgrid[0:7, 0:7].T.reshape(-1, 2) 

# 3d point in real world space 
object_points = [] 
# 2d points in image plane 
image_points = [] 
h, w = 0, 0 

images = glob.glob('chess board/*.jpg') 

for file_name in images: 
    image = cv2.imread(file_name) 
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
    h, w = gray.shape[:2] 

    # find chess board corners 
    ret, corners = cv2.findChessboardCorners(gray, (7, 7), None) 

    # add object points, image points 
    if ret: 
     object_points.append(object_point) 
     cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria) 
     image_points.append(corners) 

     # draw and display the corners 
     cv2.drawChessboardCorners(image, (7, 7), corners, ret) 
     cv2.imshow('image', image) 
     cv2.waitKey(500) 

# calibration 
retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(object_points, image_points, (w, h), None, None) 

print "camera matrix:\n", cameraMatrix 

# pi camera intrinsic parameters 
ay = cameraMatrix[1, 1] 
u0 = cameraMatrix[0, 2] 
v0 = cameraMatrix[1, 2] 
print "Ay:", ay 
print "u0:", u0 
print "v0:", v0 

cv2.destroyAllWindows()ode here 

C'est le message d'erreur que je reçois:

C:\Python27\python.exe "C:/Users/MOMO/PycharmProjects/test/training image/picam_calibration.py" OpenCV Error: Assertion failed (nimages > 0) in cv::calibrateCamera, file ........\opencv\modules\calib3d\src\calibration.cpp, line 3415 Traceback (most recent call last): File "C:/Users/MOMO/PycharmProjects/test/training image/picam_calibration.py", line 40, in retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(object_points, image_points, (w, h), None, None) cv2.error: ........\opencv\modules\calib3d\src\calibration.cpp:3415: error: (-215) nimages > 0 in function cv::calibrateCamera

Répondre

0

Vous devriez vérifier que la taille du coin, vous passez à la fonction findChessboardCorner est correcte, (7, 7) dans votre code.

Est-ce que cela correspond à votre modèle de damier?