I want to compute the extrinsic calibration of two cameras w.r.t each other and am using cv::stereoCalibrate() function to do this. However, the result does not correspond to the reality. What could be wrong ?
Setup: Two cameras mounted 7 meters high, facing each other while looking downwards. They have lot of field of view intersection and I captured checkerboard images that I used in calibration.
I am not flipping any of the images.
Do I need to flip the images ? or do I need to do something else to tell that the cameras are actually facing each other ?
Note: The same function perfectly calibrates cameras that are next to each other facing in the same direction (like any typical stereo camera).
Thanks
cv::calibrateCamera(). Estimate the transformation between the two camera frames once they have been definitely fixed: chessboard pattern visible for each camera +cv::solvePnP(). The transformationc1Mc2can be estimated asc1Mo x (c2Mo)^-1. - Catreec1,c2andMoare. I am assumingc1andc2are the camera centers andMois the transformation ?solvePnP()produces the rotation and translation w.r.t. each camera for each image of the pattern. For example, for a given pattern, lets say we obtainR1,T1(for the first camera) andR2,T2(for the second camera) through thesolvePnP()function. How can we computeMofrom these rotation-translation pairs ? - user3755683c1Mocorresponds to the homogeneous transformation between the object frame and the camera1 frame : a4x4matrix with(R | T). You will have to createc1MoasR1is a Rodrigues rotation vector, but basicallyc1Mois the same asR1,T1, just a different notation. - Catree