더북(TheBook)

Mat 클래스의 Mat::data 멤버 변수는 행렬 원소 데이터가 저장되어 있는 메모리 공간의 시작 주소를 가리키는 포인터입니다. Mat::data 멤버 변수가 가리키는 메모리 주소를 활용하면 행렬 원소를 사용자가 직접 참조할 수 있습니다. 그러나 포인터 연산을 잘못하면 에러가 발생할 수 있으므로 행렬 원소 접근을 위해서 Mat::data 변수를 직접 프로그램 코드에서 다루는 것보다는 3.2.5절에서 설명한 Mat::at() 또는 Mat::ptr() 등의 함수를 사용하는 것을 권장합니다.

Mat::rowsMat::cols 멤버 변수에 저장된 크기 정보 외에 다른 행렬 정보는 Mat 클래스에서 제공하는 멤버 함수를 이용하여 참조할 수 있습니다. Mat 클래스에서 행렬의 정보 확인을 위해 사용할 수 있는 멤버 함수를 표 3-2에 정리했습니다. 표 3-2에 나열된 함수들은 모두 const 키워드가 붙어 있으며 Mat 객체 정보를 참조하는 용도로만 사용됩니다.

▼ 표 3-2 Mat 클래스 정보 참조를 위한 멤버 함수

Mat 클래스 멤버 함수

설명

int Mat::channels() const;

행렬의 채널 수를 반환합니다.

int Mat::depth() const;

행렬의 깊이를 반환합니다. (예) CV_8U, CV_32F

size_t Mat::elemSize() const;

한 개의 원소가 차지하는 메모리 크기를 바이트 단위로 반환합니다(CV_32SC3 타입 행렬의 경우 4×3=12를 반환).

size_t Mat::elemSize1() const;

하나의 채널에서 한 개의 원소가 차지하는 메모리 크기를 바이트 단위로 반환합니다(CV_32SC3 타입 행렬의 경우 4를 반환).

bool Mat::empty() const;

비어 있는 행렬이면 true를 반환합니다.

bool Mat::isContinuous() const;

각 행의 원소가 연속적으로 저장되어 있으면 true를 반환합니다.

bool Mat::isSubmatrix() const;

행렬이 다른 행렬의 부분 행렬이면 true를 반환합니다.

Size Mat::size() const;

행렬 크기를 Size 타입으로 반환합니다.11

size_t Mat::total() const;

전체 원소 개수를 반환합니다.

int Mat::type() const;

행렬의 타입을 반환합니다. (예) CV_32FC1, CV_8UC3

 

11 Mat::size()는 사실 Mat 클래스의 멤버 변수 Mat::size에 연산자 재정의가 되어 있는 ()가 붙어 있는 형태입니다. 그러므로 엄밀하게는 멤버 함수는 아니지만, 편의상 표 3-2에 함께 나타냈습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.