Ask Your Question

Clarification of PnP variants

asked 2018-06-15 04:16:47 -0500

malharjajoo gravatar image

updated 2018-06-15 04:18:42 -0500


Recently I have been trying out the various PnP algorithms that are part of the openCV library, such as:

  1. P3P
  2. EPNP
  4. UPNP
  5. DLS

After manually annotating a few images for the 2D correspondences (like in this tutorial), I ran into a few issues and hence

My question:

  1. UPNP , EPNP and DLS gave me the same result for all images I used. I think that UPNP and EPNP may have same result since UPNP is like EPNP for uncalibrated cameras (while my camera is calibrated), but I don't understand why DLS is giving me the same result.

  2. Can P3P algorithm accept more than 4 inputs ? Currently openCV throws an assertion error if I pass in >4 points using the P3P flag to the cv::solvePnP() method.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2018-06-15 16:50:08 -0500

Eduardo gravatar image
  1. See here and here
  2. No.
edit flag offensive delete link more


Hi, thanks for pointing those out. I do recall now having read that somehwere ( so annoying !) but I came across this thesis paper ( see this) that claimed that UPNP method was successfully included into the openCV library ... and hence I thought that at least the UPNP method would work.

Is there some other way to test the variants of the PnP algorithm ?

malharjajoo gravatar imagemalharjajoo ( 2018-06-15 17:21:59 -0500 )edit

If you wanted to, you could go into solvepnp.cpp and uncomment the branches for UPNP and DLS. I have tried the DLS branch, and it didn't work for me though.

tarchon gravatar imagetarchon ( 2019-10-15 18:26:16 -0500 )edit

Question Tools



Asked: 2018-06-15 04:16:47 -0500

Seen: 930 times

Last updated: Jun 15 '18