2016-12-05 131 views
0

我想在Anaconda的Python 2.7中使用OpenCV 2.4.11校準SJ4000攝像機。Python OpenCV攝像機校準cv :: imshow error

但是,我不能運行該腳本可以在這裏找到:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_calibration/py_calibration.html#setup

我即使在samples/cpp/可用的樣本圖像,圖像left01.jpg to left14.jpg測試它。它能夠檢測到圖像中的棋盤,但一旦它擊中這一行:

cv2.imshow('img',img) 

它拋出一個錯誤:

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

編輯1:進一步調試後,我發現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 - 是的,它變成了'沒有',但爲什麼? –

回答

2

Hooray!經過一些進一步的調試後,所有解決。我懷疑這是一個版本問題。

我改變

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) 

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

所有的一切都完美的作品!

+0

現在認識到它不起作用的原因是'drawChessboardCorners()'直接對圖像進行操作,並且不返回任何東西。這也意味着如果你願意,你仍然可以保存'corners2'。 – Iluvatar