プロが教えるわが家の防犯対策術!

あるデータthe data が入っているMatデータがあった場合

下記のようにしてvector型の変数に値を入れることができることが確認できました。

----------------------------------------------------------------------------------

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変数にコピーしようとした場合

Assignの途中でエラーも吐かずに落ちてしまいます。

----------------------------------------------------------------------------------

 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変数にMat型のデータ(dataの中身だけでよい)を入れてやる必要があるのですが、どうすればよいでしょうか?

どなたかアドバイス下さい。
ポインターの理解が不足しているのではと思っていますがどなたか語教授下さい。

質問者からの補足コメント

  • うーん・・・

    分かり辛い質問内容でしたので、補足させて頂きます。
    boost/interprocess/managed_shared_memoryを使ってMatのデータを共有メモリ上に保存して別のプロセスに渡したいと思い、下記のようにして渡したところassignの中で落ちてしまいます。

      補足日時:2015/08/20 04:19
  • つらい・・・

    コードはこんな感じです。
    managed_shared_memory shmd(create_only, DEPTHNAME, WIDTH_PIC * HEIGHT_PIC * 4 + 1024);
    interprocess_mutex* mxd = shmd.construct<interprocess_mutex>("TheMutex")();
    std::vector<float> *ptrd=shmd.construct< std::vector<float> >("DepthImage")();
    mxd->lock();
    ptrd->assign((float*)decodedDepthData2.datastart,(float*)decodedDepthData2.dataend);
    mxd->unlock();

      補足日時:2015/08/20 04:20

A 回答 (1件)

実体を作る.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!