在std :: vector中存储Cv :: Mat的数据

时间:2012-10-18 03:10:11

标签: opencv stdvector

我想将数据从cv :: Mat复制到std :: vector。我显然可以浏览整个Mat并逐个复制每个值,但我希望有一种更简单的方法可以使用copyTo,clone或某种指针操作。

有没有人对此问题有任何见解?

由于

2 个答案:

答案 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));