2011-10-28 5 views
1

저는 OpenCV에서 CvPoint 구조를 사용하고 있습니다.이 구조의 필드에 xy 값을 할당해야합니다.CvPoint의 값을 설정하는 방법

여기 내 코드입니다 :

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

그러나 값을 설정하는 동안 프로그램은 항상 차단합니다.

이 값을 설정하는 방법에 대한 아이디어가 있으십니까?

+0

는'P1' & 당신은 변수'P2'를 포인터에 값을 할당하려고하지 않습니다? 'cvPoint P1 = cvPoint (32, 32); '와 같은 것을 할 필요가있다. –

+0

질문은 C++로 태그되었으므로 어쨌든'cv :: Point' 객체를 사용하는 것이 더 낫다. Othwerwise 질문을 C로 다시 태그하는 것은 좋은 생각 일 수 있습니다. –

답변

4

우선 우선 P1은 P1 유형의 객체에 대한 포인터입니다. 포인터를 통해 객체의 멤버에 무언가를 할당하려면 -> 연산자를 사용해야합니다. 이 포인터가 배열의 시작을 가리키면 연산자 []을 사용하여 개별 요소에 액세스합니다. 이 연산자는 주어진 인덱스에 대한 참조를 반환합니다.이 경우 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; 

, 그것은 단일 개체의 동적 할당 일치하는 전화 번호가 인 경우 페어링해야합니다. 또는 삭제 []의 경우 배열의.

2

더 동적 방법으로는 이름의 포인터 변수를 만들었습니다

CvPoint P1; 

P1.x=32; 

P1.y=32; 

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

CvPoint P2[2]; 

P2[0].x=32; 

P2[0].y=32; 
관련 문제