1

ポインター変数に値を渡したい、つまり Mat 型から CvMat* に渡したいですか?

したがって、次のようなものがあり、それを変数 Si;; に渡したいと思います。

Mat S=(Mat_<double>(1, 3) << 1,0,1 );
CvMat* Si;
*Si=S;

しかし、これはセグメンテーション違反を引き起こします。私は何か間違ったことをしていますか?

4

2 に答える 2

0

使用する

Si = &Sポインタを変更したい場合。

または、最初に Si を初期化して、S を Si にコピーします

Si = new Mat_<double>(1, 3);
*Si = S;

基本的に、Si を初期化する前は無効なポインターであり、ポインターが参照するアドレスに構造体をコピーすると仮定すると、無効な操作になります。オブジェクトを操作するには、有効なメモリ アドレス (new操作によって作成される) を「所有」する必要があります。

delete Si;後で使用することを忘れないでください。

于 2013-05-14T15:50:51.310 に答える