CvPoint'in değerlerini ayarlama

OpenCV'de bir CvPoint yapısı kullanıyorum ve yapının x ve y alanlarına bir değer atamam gerekiyor.

İşte kodum:

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

Ancak, programlar her zaman değeri ayarlamaya çalışırken bloke olur.

Bu değerleri nasıl ayarlayacağınız hakkında bir fikrin var mı?

1
Soru C ++ olarak etiketlendiğinden, yine de cv :: Point nesnesini kullanmanız daha iyi olur. Othwerwise, soruyu C'ye yeniden etiketlemek iyi bir fikir olabilir.
katma yazar Christian Rau, kaynak
P1 isminin işaretçi değişkeni oluşturdunuz ve P2 işaretçi değişkenine değer atamaya çalışıyorsunuz? cvPoint P1 = cvPoint (32, 32); gibi bir şey yapmanız gerekir.
katma yazar Alok Save, kaynak

2 cevap

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 . tek bir nesnenin dinamik ayırma

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

// do something with P1

// clean up 
delete P1;

2 . dinamik ayırma veya dizi

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;

Her iki örnekte de yeni operatör kullanıldığından, bir dizi durumunda bunları eşleşen arama ile sil veya silmek [] ile eşleştirmek zorunludur.

4
katma

dinamik yöntem yok:

CvPoint P1;

P1.x=32;

P1.y=32;

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

CvPoint P2[2];

P2[0].x=32;

P2[0].y=32;
2
katma