cv::Matからstd::vectorにデータをコピーしたいと思います。明らかにマット全体を調べて、各値を1つずつコピーすることはできましたが、copyTo、clone、またはある種のポインター操作を使用するより簡単な方法があるのではないかと期待していました。
誰かがこの問題について何か洞察を持っていますか?
ありがとう
マットがCV_8UC1であるとすると、次のことができます。
cv::Mat mat(nrows,ncols,CV_8UC1);
...
std::vector<unsigned char> vec;
vec.assign(mat.data,mat.data+nrows*ncols);
ピクセルタイプが異なるマルチチャンネル画像の場合、上記のコードを簡単に一般化できると思います。
これが私自身のために働いたものです。サイズがMat matVec2f
Nx1、タイプがVec2f、サイズがNのベクトルでした。次のコードは、マットのデータをベクトルにコピーします。これは、Vec2f以外のデータ型でも同様に機能するはずです。
int N = 10;
vector<Point2f> vec(N);
matVec2f.copyTo(Mat(vec, false));