더북(TheBook)

이 예제 코드에서 mat2와 mat3은 모두 3×3 크기의 행렬이고, 행렬 원소는 float 자료형을 사용합니다. 앞에서 생성된 행렬 mat1, mat2, mat3을 행렬 수식으로 표현하면 다음과 같습니다.

Mat 객체를 생성할 때, 행렬 원소를 저장할 메모리 공간을 새로 할당하는 것이 아니라 기존에 이미 할당되어 있는 메모리 공간의 데이터를 행렬 원소 값으로 사용할 수 있습니다. 외부 메모리 공간을 활용하여 Mat 객체를 생성한다는 것은 자체적인 메모리 할당을 수행하지 않고 외부 메모리를 참조하는 방식이기 때문에 객체 생성이 빠르다는 장점이 있습니다. 이러한 용도의 Mat 클래스 생성자 형식은 다음과 같습니다.

Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP);
Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP);

rows

새로 만들 행렬의 행 개수(영상의 세로 크기)

cols

새로 만들 행렬의 열 개수(영상의 가로 크기)

size

새로 만들 행렬의 크기

type

새로 만들 행렬의 타입

data

사용할 (외부) 행렬 데이터의 주소. 외부 데이터를 사용하여 Mat 객체를 생성할 경우, 생성자에서 원소 데이터 저장을 위한 메모리 공간을 동적으로 할당하지 않습니다.

step

(외부) 행렬 데이터에서 한 행이 차지하는 바이트 수. 만약 외부 행렬 데이터의 각 행에 여분의 패딩 바이트(padding byte)가 존재한다면 명시적으로 지정해야 합니다. 만약 기본값 AUTO_STEP을 사용하면 패딩 바이트가 없다고 간주합니다.

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