2016-12-05 3 views
0

Anaconda의 Python 2.7에서 OpenCV 2.4.11을 사용하여 SJ4000 카메라를 보정하려고합니다.Python OpenCV Camera Calibration cv :: imshow error

그러나, 나는 여기에 해당 스크립트를 실행할 수 없습니다 이니 심지어 samples/cpp/에서 사용할 수있는 샘플 이미지, 이미지 left01.jpg to left14.jpg와 함께 테스트입니다 http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_calibration/py_calibration.html#setup

. 이미지에 체스 판을 감지 할 수 있지만,이 줄을 명중하면 :

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

편집 : 1 :

cv2.imshow('img',img) 

그것은 오류가 발생합니다 더 디버깅 후, 나는 것으로 나타났습니다 img = cv2.drawChessboardCorners(img, (7,6), corners2,ret) 결과 None 객체에 있습니다.

어떻게 해결할 수 있습니까?

도움 주셔서 감사합니다.

+0

'img' 그것은'None' 일 수 있습니다. – furas

+0

이것은 모든 OpenCV 오류를 매우 잘 설명하지만 기본적으로'size.width> 0 && size.height> 0 '오류가 발생하지 않습니다. 즉 이미지의 크기가 0x0이거나 존재하지 않습니다. – Iluvatar

+0

@furas - 예, 'None'으로 판명되었지만 그 이유는 무엇입니까? –

답변

2

만세! 모든 추가 디버깅 후에 해결되었습니다. 이 버전 문제가 의심됩니다.

나는

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

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) 

을 변경 그리고 모든 것을 완벽하게 작동합니다!

+0

이제는 작동하지 않는 이유는'drawChessboardCorners()'가 이미지에서 직접 작동하고 아무 것도 반환하지 않기 때문입니다. 원하는 경우'corners2'를 저장할 수 있다는 것을 의미합니다. – Iluvatar