중도연재종료/OPENCV2013. 6. 8. 23:04

2차원 행렬을 위한 자료구조이다.




typedef struct CvMat

{

    int type;    //행렬 요소 자료형

    int step;


    /* for internal use only */

    int* refcount;

    int hdr_refcount;


    union

    {

        uchar* ptr;

        short* s;

        int* i;

        float* fl;

        double* db;

    } data;


#ifdef __cplusplus

    union

    {

        int rows;

        int height;

    };


    union

    {

        int cols;

        int width;

    };

#else

    int rows;

    int cols;

#endif


}

CvMat;


CvMat 행렬 생성 및 파괴


행렬의 헤더를 생성한다 : CvMat 구조체의 멤버변수를 초기화 한다.


1)CvMat* cvCreateMat(int rows, int cols, int type);

CV_8UC1과 같은 행렬요소의 자료형(type)을 이수로 주면, 행렬의 헤더를 생성하고, 행렬 요소를 저장하기 위한 메모리를 할당하여 포인터를 반환한다.


2)void cvReleaseMat(CvMat** mat);

행렬을 생성할 때 할당된 메모리를 해제한다. 2중 포인터에 주의


3)void cvSetReal2D(CvArr* arr, int idx(), int idx1, double value);

2차원 행렬(CvMat) 또는 영상(IplImage)포인터인 arr의 idx0 행, idx1 열의 요소 값에 value의 값을 저장한다.

1채널인 행렬 또는 영상에서만 사용할 수 있다.

:행렬, 영상 포인터를 받아 그 배열의 idx0열 idx1행에 value 값 저장.


4)double cvGetReal2D(const CvArr* arr, int idx0, int idx1);

2차원 행렬 또는 영상 포인트인 arr의 행 열의 "요소값"을 double형으로 반환한다.

1채널인 행렬 또는 영상에서만 사용 가능하다


5)CvArr 자료형(typedef void CvArr;)

서로 다른 자료형 사이에 형 변환을 위해 사용된다.

CvMat* 또는 IplImage* 형태의 인수를 전달 받는데 사용한다.


cvSetReal2D, cvGetReal2D 은 행렬 및 영상 모두에 사용할 수 있음에 주의 


1채널은 Gray, 3채널은 3요소 영상(RGB,HSI,vCbCr)...을 말하겠지...


ex)

'중도연재종료 > OPENCV' 카테고리의 다른 글

cvMat  (0) 2013.06.09
이미지 열기  (0) 2013.06.09
기초  (0) 2013.06.08
시작...  (0) 2013.06.08
Posted by 십자성군