【发布时间】:2012-03-08 02:45:33
【问题描述】:
我正在使用 C++ OpenCV 接口,但需要使用尚未为接口重新实现的函数,因此使用旧约定(如果重要,函数为 cvFindExtrinsicCameraParams2)
所以我需要将 vector<Point3f> 转换为 CvMat* ...我该怎么做?
【问题讨论】:
标签: c++ opencv type-conversion
我正在使用 C++ OpenCV 接口,但需要使用尚未为接口重新实现的函数,因此使用旧约定(如果重要,函数为 cvFindExtrinsicCameraParams2)
所以我需要将 vector<Point3f> 转换为 CvMat* ...我该怎么做?
【问题讨论】:
标签: c++ opencv type-conversion
希望这有助于cv::solvePnP()
cvFindExtrinsicCameraParams2 已重命名为 solvePnP。
【讨论】:
我不确定结果应该是什么,但如果我没看错documentation,你可以分几步转换你的类型:
首先,创建 Mat 到 CvMat* 的新副本:
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 的经验,所以我只是引用了文档。这可能无法反映您希望它做什么,在这种情况下,您可能需要澄清您的问题。
【讨论】: