看起来很容易。毕竟我们知道 std 或 openCV 向量可以轻松转换为矩阵,如下所示:
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 && (sizes[0] == 1 ||sizes[1]==1||sizes[0]*sizes[1]==0)) home/.../OpenCV-2.4.2/modules/core/src/matrix.cpp,第 1385 行...
创建一个 2dim 向量并填充每一行。例如:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)