我正在尝试使用 OpenCV 的 solvePnPRansac()
根据对象的已知 2D 投影计算 3D 姿态。我的值(相机固有参数、模型点(3D)、图像点(2D))都是 double 值。正常的 solvePnP()
不会提示这一点。
但是,当我尝试使用solvePnPRansac时,它会产生一条错误消息:
Assertion failed < opoints.depth() == CV_32F >
如何将此函数用于 double 值? (使用 float 不会给出所需的结果)
最佳答案
今天我测试了 SolvePnPRAnsac,对于迭代和 P3P,结果似乎是相同的,但是当我使用这些结果来渲染我的对象时,重新渲染的图像与当前帧有很大不同。 在 EPnP 选项的情况下,平移 vector 与 ITERATIVE 和 P3P 结果非常相似,但旋转与其他两个选项非常不同。然而我从Epnp结果得到的渲染图像非常好,似乎P3P和ITERATIVE在实现算法时存在一些问题。
关于c++ - solvePnPRansac 如何与双值一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638893/