2015-10-14 90 views
2

cv2.cornerSubPix()函數返回None值。cv2.cornerSubPix()函數返回None值

我正式使用opencv教程。現在我在相機校準主題。

以下是我的代碼: -

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: 
    img = cv2.imread(fname) 
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

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

    # If found, add object points, image points (after refining them) 
    if ret == True: 
     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, (7,6), corners2,ret) 
     cv2.imshow('img',img) 
     cv2.waitKey(500) 

cv2.destroyAllWindows() 

corners2具有在下面的行值無:

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

由於此線cv2.imshow的()也呈現出錯誤。

灰色,角落和標準有一定的價值。

+0

擊中了同樣的問題,任何想法? –

回答

2

我有同樣的問題,它證明了示例教程代碼和我正在運行的由PythonXY安裝的版本之間的版本問題。

如果你的問題是角2和img值都被None填充,那麼這是因爲你正在使用的OpenCV版本是爲了使用這些命令來更新輸入,而不是重新定義輸入。

解決方法是簡單的,改變從以下兩行:

corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) 
img = cv2.drawChessboardCorners(img, (7,6), corners2,ret)` 

到:

cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) 
cv2.drawChessboardCorners(img, (7,6), corners ,ret)