看起来很容易。毕竟我们知道std或openCV向量可以很容易地转换成Matrix,如下所示:
vector<Point> iptvec(10);
Mat iP(iptvec);
openCV cheatSheet建议反向:
vector<Point2f> ptvec = Mat_ <Point2f>(iP);
但是,有一点需要注意:矩阵必须只有一行或一列。要转换任意矩阵,您必须重塑:
int sz = iP.cols*iP.rows;
vector<Point2f> ptvec = Mat <Point2f>(iP.reshape(1, sz));
否则您将收到错误:
* OpenCV错误:断言失败(dims == 2&amp;&amp;(sizes [0] == 1 || sizes [1] == 1 || sizes [0] * sizes [1] == 0) )在创建,文件/home/.../OpenCV-2.4.2/modules/core/src/matrix.cpp,第1385行......
答案 0 :(得分:1)
创建一个2dim向量并填充每一行。 E.g:
Mat iP=Mat::zeros(10, 20, CV_8UC1);
vector<vector<int>> ptvec;
for (int i = 0; i < iP.rows; i++)
{
vector<int> row;
iP.row(i).copyTo(row);
ptvec.push_back(row);
}