Aruco: Why does estimatePoseBoard() expect us to pass an empty rvec and tvec variables?

I’m using Python.

Every example I’ve come across define rvec=None and tvec=None and then when calling the function have tvec and rvec both as return variables as well as arguments to the function, such as:



retval, rvec, tvec = aruco.estimatePoseBoard( corners, ids, board, camera_matrix, dist_coeffs, rvec, tvec )

Now I’m not a professional Python programmer but this seems like a very strange an unnecessary way to do things. Why not just allow users to define rvec and tvec as return values and not have to pass empty rvec and tvec variables as arguments?

vestigial features from C++, where you can’t return multiple things, so you have to pass them in as references.

in python, these arguments should not be required. pass None. they seem to be required because the C++ signature doesn’t signal this fact to the bindings generation code.

docs also say they can be used as an initial guess, if you have them.