2012-10-07 46 views
5

Tôi đang cố gắng tìm hiểu cách thực hiện hiệu chỉnh máy ảnh 3D và stereo bằng cách sử dụng openCV và python. Sử dụng 3 lần xem máy ảnh của bàn cờ 8x6 (góc nội thất 7x5), tôi đã có thể nhận được cv.calibrateCamera() làm việc OK nhưng hoàn toàn bị kẹt khi tôi sử dụng cv2. Một trong các bước là tìm các góc bàn cờ. Trong khi cv.findChessboardCorners() trả về các góc như là một danh sách các điểm, cv2 sử dụng các mảng numpy và trả về các điểm dưới dạng mảng (35,1,2) numpy. Các tham số cho cv2.calibrateCamera() là object_points, image_pointsimage_size. Tôi đang cung cấp các điểm đối tượng trong một mảng có khối lượng (3,35,3) và điểm ảnh trong một mảng có khối lượng (3,35,2). Kích thước hình ảnh là (1632, 1224). Ai có thể cho tôi biết vấn đề là gì? Lỗi tôi nhận được không hữu ích lắm:cv2.cameraCalibration bằng python

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 

Trả lời

5

Điểm cần phải là float32, ở dạng ma trận (N, 2) và (N, 3). Bạn có thể chuyển đổi sang float32 theo cách này:

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

Cảm ơn bạn! Lỗi này làm tôi khó chịu đến hết! – shinjin

+1

Tìm thấy câu hỏi này vào năm 2015, sử dụng OpenCV 2.4.10. Tôi nhận được một tương tự "cv2.error: ... calibration.cpp: 3169: lỗi: (-215) ni> = 0 trong hàm cv :: collectCalibrationData". Cách giải quyết là định hình lại cả hai mảng thành (1, N, 3) và (1, N, 2) đối với các điểm đối tượng và hình ảnh tương ứng. – sastanin

Các vấn đề liên quan