IplImage *img;
img = (IplImage **)malloc(IMAGE_NUM * sizeof(IplImage *));
for(index=0; index<IMAGE_NUM; index++){
sprintf(filename, "preproc/preproc%d.jpg", index);
img = cvLoadImage(filename, 0);
}
안녕하세요! 이 코드 조각은 오류를 생성합니다. 'IplImage ** {aka _IplImage * }'을 'IplImage {aka _IplImage *}'로 할당 할 수 없습니다. 여기에 여러 이미지를로드하려고합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 감사!IplImage **을 IplImage로 변환하는 중 오류가 발생했습니다. *
img가 IplImage ** img로 선언 된 경우 너비와 높이에 어떻게 액세스 할 수 있습니까? 그리고 어떻게 함수를 cvSetImageROI로 올바르게 사용할 수 있습니까? 위와 같이 img을 선언 한 후에 문제가 발생하기 때문에 올바른 구문은 무엇입니까? 고마워요! – cmsl
이것을 다음과 같이 생각하십시오. 객체 또는 임의의 데이터 유형에 대한 포인터를 선언하면 int * pointerToInt; 우리는이 포인터가 정수 배열을 가리키게 할 수 있습니다. 그렇게하면 (정적 또는 동적으로) 포인터 배열의 N 번째 멤버에 액세스 할 수 있습니다. pointerToInt [N]. 배열을 동적으로 선언하더라도 (int * pointerToInt = new int [MagicalNumber]) 포인터가 있다고 진실로 말하면 어레이 첨자 연산자 []를 통해 여전히 액세스 할 수 있습니다. 그래서 pointerToInt [MagicalNumber-1]이 작동합니다. 2D 배열에도 동일하게 적용됩니다. – ScarletAmaranth
우리는 int ** pointerToIntPointer - 포인터에 대한 포인터를 선언합니다. 동적으로 할당하는 것은 루프를 포함 할 것이고 여기에서 세부 사항으로 들어가고 싶지는 않지만 다시 정적으로 말할 수 있습니다 : int pointerToIntPointer [MagicalNumber0] [MagicalNumber1]; 그런 다음 배열 첨자 연산자를 사용하여 배열에 액세스합니다. - int pointerToIntPointer [MagicalNumber0-1] [MagicalNumber1-1]; '원시 포인터'와 비슷하게 동적으로 할당 된 배열에 대해 동일한 구문을 사용할 수 있습니다. 또한 동적으로 할당 할 배열을 [] 삭제하는 것을 잊지 마십시오! :) 그냥 선생님 '. – ScarletAmaranth