1

cv::Matからstd::vectorにデータをコピーしたいと思います。明らかにマット全体を調べて、各値を1つずつコピーすることはできましたが、copyTo、clone、またはある種のポインター操作を使用するより簡単な方法があるのではないかと期待していました。

誰かがこの問題について何か洞察を持っていますか?

ありがとう

4

2 に答える 2

3

マットがCV_8UC1であるとすると、次のことができます。

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

ピクセルタイプが異なるマルチチャンネル画像の場合、上記のコードを簡単に一般化できると思います。

于 2012-10-18T05:04:44.757 に答える
0

これが私自身のために働いたものです。サイズがMat matVec2fNx1、タイプがVec2f、サイズがNのベクトルでした。次のコードは、マットのデータをベクトルにコピーします。これは、Vec2f以外のデータ型でも同様に機能するはずです。

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