在OpenCV中将vector <point3f>转换为CvMat *?</point3f>

时间:2012-02-16 17:11:26

标签: c++ opencv type-conversion

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

所以我需要将vector<Point3f>转换为CvMat* ...我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

cvFindExtrinsicCameraParams2已重命名为solvePnP

答案 1 :(得分:0)

我不确定结果应该是什么,但是如果我正确阅读了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的经验,所以我只是引用文档。这可能无法反映您的意图,在这种情况下,您可能需要澄清您的问题。