CvPointの値を設定する方法

私はOpenCVで CvPoint 構造体を使用しており、構造体の x および y フィールドに値を割り当てる必要があります。

ここに私のコードです:

CvPoint* P1;
P2[0].x=32;

しかし、プログラムは常に値を設定しようとしている間にブロックされます。

どのようにこれらの値を設定するかについての任意のアイデア?

1
質問はC ++でタグ付けされているので、とにかく cv :: Point オブジェクトを使用する方がよいでしょう。質問をCに書き直すことは良い考えかもしれません。
追加された 著者 Christian Rau,
ポインタ変数 P2 に値を割り当てようとしている P1 という名前のポインタ変数を作成しましたか? cvPoint P1 = cvPoint(32,32); のような操作をする必要があります。
追加された 著者 Alok Save,

2 答え

Well first of all P1 is a pointer to an object of type P1. In order to assign something to an object's member via its pointer you need to use the -> operator. If this pointer points to the beginning of an array you use the operator[] to access individual elements. This operator returns a reference for the given index, in this case CvPoint& .

1。単一オブジェクトの動的割り当て

CvPoint* P1 = new CvPoint();//default construction of an object of type CvPoint
P1->x = 32;

// do something with P1

// clean up 
delete P1;

2。動的割り当てまたは配列

CvPoint* points = new CvPoint[2];//array of two CvPoints
points[0].x = 32;//operator[] returns a reference to the CvPoint at the given index
points[1].x = 32;

// do something with points

// clean up
delete[] points;

どちらの例でもnew演算子が使用されているため、配列の場合は delete または delete [] を呼び出す必要があります。

4
追加された

動的な方法はありません:

CvPoint P1;

P1.x=32;

P1.y=32;

//////////////

CvPoint P2[2];

P2[0].x=32;

P2[0].y=32;
2
追加された