2012-10-18 41 views
0

我想將cv :: Mat中的數據複製到std :: vector中。我顯然可以遍歷整個Mat,並逐個拷貝每個值,但我希望可以使用copyTo,clone或某種指針操作更簡單的方法。在std :: vector中存儲Cv :: Mat的數據

有沒有人有任何關於這個問題的見解?

感謝

+0

在OpenCV是一個從std :: vector <>到cv :: Mat的自動轉換器。也可能有相反的轉換器。檢查InputArray/OuptupArray屬性。你可以將一個mat轉換成InputArray,然後使用getVector()或類似的東西。 – Sam

回答

2

假設你墊CV_8UC1,你可以做以下。

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

對於具有不同的像素類型的多通道圖像,我想你將能夠容易地概括上面的代碼。

+1

你也可以直接使用帶有範圍參數'std :: vector vec(mat.data,mat.data + nrows * ncols)'的vector構造函數 – remi