2017-05-05 41 views
0

私はpython 3をラズベリーパイ3で実行しており、opencvをインストールしています。私はチェッカーボードの10枚の画像を撮影し、10枚の画像をすべて検出して表示しますが、最後のラインに到達するとエラーになります。ここで私が使用した画像です:https://imgur.com/gallery/IDfHHこれは私のコードです:Raspberry pi OpenCVエラー:関数collectCalibrationDataで(-215)ni == ni1

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) 

答えて

0

の例では、6X7のチェス盤のイメージを持っていることを前提とし、私はあなたが6X9を持っていると思います。 コードは次のようでなければならないので、あなたは、6X9の校正画像に対してobjp変数を準備しなければならない:objp = np.zeros((6 * 9、3)、np.float32)

コード:

objp = np.zeros((6*9,3), np.float32) 
関連する問題