2017-05-05 6 views
0

Ich habe Python 3 auf einem Raspberry Pi 3 ausgeführt und Opencv installiert. Ich habe 10 Bilder eines Schachbretts gemacht, es erkennt alle 10 Bilder und zeigt sie an, aber wenn es zur letzten Zeile kommt, wird ein Fehler ausgegeben. Hier die Bilder i verwendet: https://imgur.com/gallery/IDfHH Dies ist mein Code:Raspberry pi OpenCV Fehler: (-215) ni == ni1 in Funktion collectCalibrationData

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,0), (1,0,0), (2,0,0) ....,(6,5,0) 
objp = np.zeros((6*7,3), np.float32) 
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2) 

# Arrays to store object points and image points from all the images. 
objpoints = [] # 3d point in real world space 
imgpoints = [] # 2d points in image plane. 

images = glob.glob('*.jpg') 

for fname in images: 
    print('test') 
    img = cv2.imread(fname) 
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

    # Find the chess board corners 
    ret, corners = cv2.findChessboardCorners(gray, (6,9),None) 

    # If found, add object points, image points (after refining them) 
    if ret == True: 
     print('test2') 
     objpoints.append(objp) 

     corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) 
     imgpoints.append(corners2) 

     # Draw and display the corners 
     img = cv2.drawChessboardCorners(img, (6,9), corners2,ret) 
     cv2.imshow('img',img) 
     cv2.waitKey(500) 
print('test3') 
cv2.destroyAllWindows() 
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None) 

Antwort

0

das Beispiel geht davon aus, dass Sie ein 6x7 Schachbrett Bild haben, ich glaube, Sie 6x9 haben. Sie haben die objp Variable für eine 6x9 Kalibrierungsbild herzustellen, so dass der Code hat so sein: objp = np.zeros ((6 * 9, 3), np.float32)

Code:

objp = np.zeros((6*9,3), np.float32) 
Verwandte Themen