2011-11-12 7 views
1

私はcv :: Mat画像を持っていますが、同じサイズの2番目のcv :: Matを考えていますが、各エントリはそのピクセルに対応する複雑なデータ構造を格納しています。これはcv :: Matで行うことができますか、それとも私がそこで開いているベクトルのベクトルですか?特にコンストラクタとtypechannelsdepth方法は、単純なOpenCVのデータタイプを含むことができるように思われる、cv::Matのマニュアルを見てcv :: Matの内部に複雑なデータ構造を保持することはできますか?

答えて

1

(8/16/32ビットのint 32ビット/ 64ビットフロート、またはこれらの1/2/3/4タプルですが、混合物はもちろんありません)。

でも、2次元配列/行列/イメージ(すべての行が同じ数の列を持つ)のベクトルのベクトルを提案するのではなく、簡単な1Dベクトルと単純なインデックスマジック2Dから1Dへのマッピングを行います。これははるかに良いメモリの局所性と割り当ての動作を備えています。

0

データ構造がどのように「複雑」であるかによって異なります。同じタイプの要素を持つ構造体しか使用できません。そして、OpenCVのはあなたにクリスチャンが言うように、あなたはタイプを混在させることはできません

Vec<6,float> vv; 
//fill vector 
vv.push_back(Vec6f(1,2,3,4,5,6); 
Mat m(vv); 

Vec<6,float> vec = m.at<Vec6f>(1); 

例により、

Vec<n, type> 

と、この可能性を提供しています

+0

(フロートチャンネルと文字1を持っている)そして、あなたはもちろんのことができます単純整数型または浮動小数点型以外の型を使用しないでください。 –

関連する問題