2015-08-19 69 views
0

我想將mat數據複製到矢量。如何將Mat(CV_32FC1)複製到矢量<float> *

所以,現在我要,要墊數據複製到「矢量* Vf2的」

而且我寫了這個代碼。


cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」); 

//copy vector to mat 

vector< float> *Vf2; 

//copy mat to vector 

Vf2->assign((float*)M.datastart, (float*)M.dataend); 

但是,它不跌,而分配方法錯誤。

並且如果向量不是指針。

所以這下面的代碼成功。


cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」); 

//copy vector to mat 

vector< float> Vf2; 

//copy mat to vector 

Vf2.assign((float*)M.datastart, (float*)M.dataend); 

如何墊複製到vector<float>* Vf2

告訴我有人

對不起精算師我想要做的是,墊數據複製到共享內存。 和我寫這樣的代碼。

managed_shared_memory shmd(create_only, DEPTHNAME, WIDTH_PIC * HEIGHT_PIC * 4 + 1024); 

std::vector<float> *ptrd=shmd.construct< std::vector<float> >("DepthImage")(); mxd->lock(); 

ptrd->assign((float*)decodedDepthData2.datastart,(float*)decodedDepthData2.dataend); 

mxd->unlock(); 

明白爲什麼,我想在墊子上的數據複製到矢量*

回答

0

你定義一個指針vector<float>。然後你沒有先分配它就訪問它。您需要初始化指針: vector<float> *Vf2 = new vector<float>;並訪問它指向的對象。

不要忘記一旦完成就釋放它(delete Vf2;)!或者考慮使用智能指針

+1

或者不分配標準箱的新開始。 – NathanOliver

+0

當然。但讓我們假設他真的需要一個指向矢量的指針... –

+0

所以,我必須將墊子複製到共享內存。 如何複製到「std :: vector * ptrd = shmd.construct >(」DepthImage「)();」 – kuu

0

您不應該使用指向vector的指針。

您可以自/至vectorMat轉換:

#include <opencv2\opencv.hpp> 
#include <vector> 
using namespace std; 
using namespace cv; 

int main() 
{ 
    vector<float> v1{1, 2, 3, 4, 5}; 

    // vector to Mat 

    Mat1f m1(v1);  // not copying data, just creating the matrix header 
    Mat1f m2(v1, true); // copying data 

    // Mat to vector 

    vector<float> v2(m2.begin(), m2.end()); // copying data 


    // If you really need a pointer to a vector, then 

    vector<float>* v3 = new vector<float>(m2.begin(), m2.end()); 
    // ... do your stuff 
    delete v3; 

    return 0; 
} 
+0

managed_shared_memory shmd(create_only,DEPTHNAME,WIDTH_PIC * HEIGHT_PIC * 4 + 1024); \t interprocess_mutex * mxd = shmd.construct (「TheMutex」)(); \t std :: vector * ptrd = shmd.construct >(「DepthImage」)(); – kuu

+0

@Hiwasawa更新代碼指針向量 – Miki

+0

謝謝三木。爲什麼我必須使用指針,因爲我想將Mat數據複製到共享內存。 – kuu

相關問題