我想将数据从cv :: Mat复制到std :: vector。我显然可以浏览整个Mat并逐个复制每个值,但我希望有一种更简单的方法可以使用copyTo,clone或某种指针操作。
有没有人对此问题有任何见解?
由于
答案 0 :(得分:3)
假设您的Mat是CV_8UC1,您可以执行以下操作。
cv::Mat mat(nrows,ncols,CV_8UC1);
...
std::vector<unsigned char> vec;
vec.assign(mat.data,mat.data+nrows*ncols);
对于具有不同像素类型的多通道图像,我认为您将能够轻松概括上述代码。
答案 1 :(得分:0)
这对我自己有用。我有Mat matVec2f
大小为Nx1,类型为Vec2f,向量大小为N.以下代码将Mat的数据复制到向量。我相信这对Vec2f以外的数据类型同样有效。
int N = 10;
vector<Point2f> vec(N);
matVec2f.copyTo(Mat(vec, false));