2016-07-17 7 views
2

openCVの初心者です。私はMatデータタイプがポインタの開始を必要としないのはなぜだろうと思っています。あなたは(あなたが好きな場合は、ヘッダ)int aがintのためのスペースを割り当てて最初は全く同じ方法でマットオブジェクトのためのスペースを割り当てMatタイプをポインタにする必要がないのはなぜですか?

Mat image 

代わりの

Mat* image 

答えて

2

を使用することができます。

データのサイズとタイプを指定したり、イメージをロードすると、実際のデータ用にメモリが割り当てられます。

これは実際には初心者のCまたはC++のプログラミングに関する質問ですが、openCVとは関係ありません。 Mat imgとMat * img = new(Mat(...)) `はどちらもMat自体のためのスペース(ヘッダのみ)を作成します。いずれの場合も、データのサイズを指定することができ、Matは内部的に画像データのメモリを割り当てます。これはあなたには見えず、マットの保管方法とは関係ありません。

+0

理論的には、私はMat * imgを作り、後で* img = Mat(param、param、param、param)を作ることができましたか? – lluisrojass

+0

いいえ - あなたがC++であると仮定して 'Mat * img = new(Mat(rows、cols、type))'を実行することができます。 –

+0

本当に説明から恩恵を受ける価値がないなら、データを割り当てるときにポインタを指定するだけですか?それは理にかなっている。しかし、なぜそれが 'Mat img(rows、cols、type)'にポインタが必要ないのでしょうか? – lluisrojass

関連する問題