c++ - solvePnPRansac 如何与双值一起使用?

标签 c++ opencv

我正在尝试使用 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/

相关文章:

python - 检测网格的角

opencv - 从CV_8UC1到OpenCV ConvertTo CV_32SC1

c++ - 按位 NOT 运算符返回意外的负值?

c++ - 在 Qt 中从 QByteArray 加载 QPixmap?

c++ - 如何将坐标分布对齐到完美对齐?

python - 在图像中查找单色水平空间

c++ - 在没有注册数据库的情况下使用 ODBC 连接到 SQLite

c++ - 如何在 C++ 中同步和组合来自多个线程的结果?

C++ - || 如何运算符(operator)工作?

python 错误: tuples indices must be integers or slices not tuples