2013-06-25 6 views
16

방금 ​​"OpenCV Library with OpenCV Library 학습"으로 OpenCV를 배우기 시작했습니다. 사진을 표시하는 방법을 보여줍니다 첫 번째 예에서 IplImage * img의 설명

, 그것은 책을 설명하지만, 나는 아직도 완전히 정확하게 IplImage* img이 무엇을 모르는 라인을

IplImage* img = cvLoadImage("name.type") 

있습니다.

cvLoadImage는 IplImage가 가리키는 img에 이미지를로드합니까? 아무도 나에게 이것을 설명 할 수 있니? 뿐만 아니라 blahblahblah이 될 수 있습니다 당신을

+4

OpenCV를 배우기 시작한 분이라면 C++ API 사용을 강력히 권장합니다. C API ('IplImage' 포함)는 더 이상 사용되지 않습니다. 대신 OpenCV의 [자습서] (http://docs.opencv.org/doc/tutorials/tutorials.html)에서 시작하는 것이 좋습니다. – Aurelius

답변

25
  • img 변수의 이름 감사합니다;

  • IplImage은 변수의 유형이며, 이미지 데이터 자체와 이미지의 일부 정보 (크기, 색 농도 등)가 포함 된 struct입니다. IplImage에 대한 추가 정보를 원하시면

    typedef struct _IplImage { 
    int     nSize; 
    int     ID; 
    int     nChannels; 
    int     alphaChannel; 
    int     depth; 
    char     colorModel[4]; 
    char     channelSeq[4]; 
    int     dataOrder; 
    int     origin; 
    int     align; 
    int     width; 
    int     height; 
    struct _IplROI*  roi; 
    struct _IplImage* maskROI; 
    void*    imageId; 
    struct _IplTileInfo* tileInfo; 
    int     imageSize; 
    char*    imageData; 
    int     widthStep; 
    int     BorderMode[4]; 
    int     BorderConst[4]; 
    char*    imageDataOrigin; 
    } IplImage; 
    

: Other question about IplImage

  • cvLoadImage은 그것을로드 할 때 그것이 IplImage를 생성 의미하고 그 설치 장소의 반환하는 IplImage에 대한 포인터를 제공합니다.

메모리 누수가 발생하지 않도록하려면 완료했을 때 cvReleaseImage(&img)을 잊지 마세요.

+0

그래서 IplImage는 "img"변수에 정보를 저장하는 데이터 구조입니까? 괜찮 으면 여기에있는 동안 더 많은 질문을하고 싶습니다 ... 왜 포인터가 IplImage에 필요합니까? "할당 된 이미지 데이터 구조에 대한 포인터가 반환됩니다"라는 것은 무슨 뜻입니까? 고맙습니다. – user2521723

+0

이미지 데이터가 있고 그것에 대한 포인터는'IplImage * img = cvLoadImage ("name.type")'호출로 생성됩니다. 이와 같이 선언하는 이유는 모든 cv ... 메소드가 이미지 포인터를 받아들이고 반환하기 때문입니다. 학습 한 책은 C로 작성된 오래된 openCV API를 기반으로합니다. 이제 openCV 2.4.5 최신 안정 버전은 포인터가 필요없는 C++ API를 사용합니다. 책과 함께 opencv 2.4.5 문서를보고 훌륭한 자습서를 쉽게 배울 수 있습니다. C++ API'Mat image = imload ("");'선언은 포인터가 없으며 메서드는 포인터가 아니라 데이터가 필요합니다. – baci