转换的OpenCV矩阵到载体(convert openCV matrix into vector)

2019-09-02 10:35发布

看起来似乎很容易。 毕竟我们知道性病或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的错误:断言失败(变暗== 2 &&(尺寸[0] == 1种||尺寸[1] == 1种||尺寸[0] *尺寸[1] == 0))中创建,文件/家庭/.../的OpenCV-2.4.2 /模块/核心/ src目录/ matrix.cpp,线路1385 ...

Answer 1:

创建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);
}


文章来源: convert openCV matrix into vector