1

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

有人对这个问题有任何见解吗?

谢谢

4

2 回答 2

3

Assuming your Mat is CV_8UC1, you can do following.

cv::Mat mat(nrows,ncols,CV_8UC1);
...
std::vector<unsigned char> vec;
vec.assign(mat.data,mat.data+nrows*ncols);

For multiple channel image with different pixel type, I think you will be able to easily generalize the code above.

于 2012-10-18T05:04:44.757 回答
0

这对我自己有用。我有Mat matVec2f大小为 Nx1、类型为 Vec2f 和大小为 N 的向量。以下代码将 Mat 的数据复制到向量中。我相信这对于 Vec2f 以外的数据类型应该同样适用。

int N = 10;
vector<Point2f> vec(N);
matVec2f.copyTo(Mat(vec, false));
于 2018-05-21T03:51:33.360 回答