2016-12-05 4 views
0

J'essaie de calibrer une caméra SJ4000 en utilisant OpenCV 2.4.11 en Python 2.7 dans Anaconda.Python OpenCV Caméra Calibration cv :: erreur imshow

Cependant, je ne peux pas exécuter le script ici: http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_calibration/py_calibration.html#setup

Je teste même avec les exemples d'images disponibles dans samples/cpp/, images left01.jpg to left14.jpg. Il est capable de détecter l'échiquier dans les images, mais une fois qu'il frappe cette ligne:

cv2.imshow('img',img) 

Il renvoie une erreur:

error: ..\..\..\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow 

EDIT 1: Après plus de débogage, j'ai trouvé que img = cv2.drawChessboardCorners(img, (7,6), corners2,ret) résultats dans un objet None.

Comment résoudre ce problème?

Merci pour toute aide!

+0

vérifier 'img' il peut être' None' – furas

+0

Ceci est aussi hautement descriptif que toutes les erreurs OpenCV, mais cela signifie en fait qu'il échoue l'assertion 'size.width> 0 && size.height> 0'. c'est-à-dire que votre image est probablement de taille 0x0 ou n'existe pas. – Iluvatar

+0

@furas - Oui, il s'est avéré être «None» mais pourquoi? –

Répondre

2

Hourra! Tout est résolu après un autre débogage. Je soupçonne que c'est un problème de version.

j'ai changé

corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) 
imgpoints.append(corners2) 
# Draw and display the corners 
img1 = cv2.drawChessboardCorners(img, (7,6), corners2,ret) 

Pour

cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) 
# Draw and display the corners 
cv2.drawChessboardCorners(img, (7,6), corners,ret) 

Et tout fonctionne parfaitement!

+0

Réalisez maintenant que la raison pour laquelle cela n'a pas fonctionné est 'drawChessboardCorners()' fonctionne directement sur l'image et ne retourne rien. Ce qui signifie également que vous pouvez toujours sauvegarder 'corners2' si vous le souhaitez. – Iluvatar