我想将数据从 cv::Mat 复制到 std::vector。我显然可以遍历整个 Mat 并一个一个地复制每个值,但我希望使用 copyTo、克隆或某种指针操作可能有一种更简单的方法。
有人对这个问题有任何见解吗?
谢谢
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.
这对我自己有用。我有Mat matVec2f
大小为 Nx1、类型为 Vec2f 和大小为 N 的向量。以下代码将 Mat 的数据复制到向量中。我相信这对于 Vec2f 以外的数据类型应该同样适用。
int N = 10;
vector<Point2f> vec(N);
matVec2f.copyTo(Mat(vec, false));