2
votes

I have posted this to the opencv group on yahoo, with no luck.

I have a set of image / object points from one picture taken of a 3D calibration rig, NOT using checkerboards. I've used the data in Matlab with the Bouguet camera calibration toolbox, and it works! I'm trying to get away from Matlab (maybe I shouldn't be).

My code is below, I keep getting this error "\OpenCV-2.3.1\modules\calib3d\src\calibration.cpp:3161: error: (-215) ni >= 0 "

I've been trying to use the opencv 2.3.1 python wrappers. Also, the initial camera matrix I define is very close to the calculated values from the Matlab toolbox. I have a feeling it's going to be easier to translate the Matlab code to python than to get this to work, but I'm hoping someone can prove that wrong. Thanks in advance for any help. John

import cv2
import numpy as np

obj_points = [[-9.7,3.0,4.5],[-11.1,0.5,3.1],[-8.5,0.9,2.4],[-5.8,4.4,2.7],    [-4.8,1.5,0.2],[-6.7,-1.6,-0.4],[-8.7,-3.3,-0.6],[-4.3,-1.2,-2.4],[-12.4,-2.3,0.9],    [-14.1,-3.8,-0.6],[-18.9,2.9,2.9],[-14.6,2.3,4.6],[-16.0,0.8,3.0],[-18.9,-0.1,0.3],    [-16.3,-1.7,0.5],[-18.6,-2.7,-2.2]]
img_points = [[993.0,623.0],[942.0,705.0],[1023.0,720.0],[1116.0,645.0],[1136.0,764.0],[1071.0,847.0],[1003.0,885.0],[1142.0,887.0],[886.0,816.0],[827.0,883.0],[710.0,636.0],[837.0,621.0],[789.0,688.0],[699.0,759.0],[768.0,800.0],[697.0,873.0]]

obj_points = np.array(obj_points)
img_points = np.array(img_points)

w = 1680
h = 1050
size = (w,h)

camera_matrix = np.zeros((3, 3))
camera_matrix[0,0]= 2200.0
camera_matrix[1,1]= 2200.0
camera_matrix[2,2]=1.0
camera_matrix[2,0]=750.0
camera_matrix[2,1]=750.0

dist_coefs = np.zeros(4)
results = cv2.calibrateCamera(obj_points, img_points,size, camera_matrix, dist_coefs)

This link is the answer OpenCV 2.3 camera calibration

1

1 Answers

0
votes

According to the doc, you have to pass a vector of vectors for img_points and obj_points. Here, you pass only a vector of points in each case. This may explain the ni >= 0. You probably need to rephrase your call to the calibration function.