2012-10-07 26 views
5

OpenCV ve python kullanarak 3D ve stereo kamera kalibrasyonunun nasıl yapıldığını öğrenmeye çalışıyorum. Bir 8x6 satranç tahtası (7x5 iç köşeler) 3 kamera görüşlerini kullanarak, cv.calibrateCamera() Tamam çalışıyordum ama cv2 kullandığımda tamamen takılı kaldım. Adımlardan biri satranç tahtası köşelerini bulmak. cv.findChessboardCorners() köşeleri bir nokta listesi olarak döndürürken, cv2 numpy dizileri kullanır ve noktaları (35,1,2) numpy dizisi olarak döndürür. Cv2.calibrateCamera() parametresi object_points, image_points ve image_size'dur. Nesne noktalarını bir (3,35,3) numpy dizisinde sağladım ve görüntü (3,35,2) numpy dizisinde işaret ediyor. Resim boyutu (1632, 1224). Herkes bana sorunun ne olduğunu söyleyebilir mi? Elde hata çok faydalı değildir:cv2.cameraCalibration

Traceback (most recent call last): 
    File "H:/pyCV/locv_book/ch11/calCamera2a.py", line 46, in <module> 
    cv2.calibrateCamera(opts,ipts,size) 
error: ..\..\..\src\opencv\modules\calib3d\src\calibration.cpp:3173: error: (-215) ni >= 0 

cevap

5

Nokta (N, 2) ve (N, N 3) matris şeklinde, float32 gerekmektedir. Bu şekilde float32'ye dönüştürebilirsiniz:

points32 = np.array(points,dtype=np.float32) 
+0

Teşekkür ederiz! Bu hata beni hiç rahatsız etmedi! – shinjin

+1

Bu soruyu 2015 yılında OpenCV 2.4.10 kullanarak bulduk. Benzer bir "cv2.error: ... calibration.cpp: 3169: hata: (-215) ni> = işlev cv :: collectCalibrationData" olsun. Çözüm, sırasıyla nesne ve görüntü noktaları için her iki diziyi de (1, N, 3) ve (1, N, 2) olarak yeniden şekillendirmekti. – sastanin

İlgili konular