OpenSeeFace icon indicating copy to clipboard operation
OpenSeeFace copied to clipboard

Camera space origin is not at screen center

Open seece opened this issue 2 years ago • 2 comments

When a face is centered on camera the reported translation X and Y coordinates are not zeros. A possible reason for this is that the camera intrinsic matrix has offsets computed for the wrong axis when doing the position solving.

The camera matrix is

self.camera = np.array([[width, 0, width/2], [0, width, height/2], [0, 0, 1]], np.float32)

so that means c_x = width/2 and c_y = height/2 but then later image_pts that is passed to solvePnP() is a vector of (y,x) points so self.camera translates the Y coordinates with width/2 and vice-versa for the point X coordinates.

I'd submit a patch to fix this but the code is somewhat tricky so I'm not sure I'd get it right.

seece avatar Sep 17 '21 15:09 seece

Thank you for the report. I'll look into it.

emilianavt avatar Sep 17 '21 15:09 emilianavt

There does definitely seem something off, but like you noted, it's the code is a bit tricky and trying to adjust it in a simple way breaks things. I'll get back to it again.

emilianavt avatar Jun 20 '22 13:06 emilianavt