【问题标题】:Convert vector<Point3f> to CvMat* in OpenCV?在 OpenCV 中将 vector<Point3f> 转换为 CvMat*?
【发布时间】:2012-03-08 02:45:33
【问题描述】:

我正在使用 C++ OpenCV 接口,但需要使用尚未为接口重新实现的函数,因此使用旧约定(如果重要,函数为 cvFindExtrinsicCameraParams2

所以我需要将 vector&lt;Point3f&gt; 转换为 CvMat* ...我该怎么做?

【问题讨论】:

    标签: c++ opencv type-conversion


    【解决方案1】:

    希望这有助于cv::solvePnP()

    cvFindExtrinsicCameraParams2 已重命名为 solvePnP

    【讨论】:

      【解决方案2】:

      我不确定结果应该是什么,但如果我没看错documentation,你可以分几步转换你的类型:

      首先,创建 MatCvMat* 的新副本:

      std::vector<Point3f> myVec = ...;
      //template<typename _Tp> explicit Mat(const vector<_Tp>& vec, bool copyData=false);
      Mat m = Mat(myVec);
      

      然后使用Mat的强制转换运算符:

      //operator CvMat() const;
      CvMat cvm = static_cast<CvMat>(m);
      

      最后调用你的函数

      cvFindExtrinsicCameraParams2(...,&cvm,...);
      

      但是,我没有使用 OpenMv 的经验,所以我只是引用了文档。这可能无法反映您希望它做什么,在这种情况下,您可能需要澄清您的问题。

      【讨论】:

      • 技术上是正确的答案,虽然我会使用上面的。谢谢。
      • @Ben:我当然建议你这样做!
      猜你喜欢
      • 2011-10-21
      • 2015-05-28
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多