더북(TheBook)

코드 3-6에 나타난 Mat 클래스는 다양한 형태의 생성자와 많은 멤버 함수, 멤버 변수를 가지고 있습니다. 생성자와 멤버 함수 사용법은 이후 3.2.2절부터 예제 코드와 함께 자세히 설명하기로 하고, 여기서는 코드 3-6의 28~31행에 나타난 Mat 클래스의 멤버 변수에 대해 알아보겠습니다. 먼저 Mat::dims 멤버 변수는 Mat 행렬의 차원을 나타내며, 영상과 같은 2차원 행렬의 경우 Mat::dims 값은 2입니다. Mat::rowsMat::cols 멤버 변수는 2차원 행렬의 크기를 나타냅니다. Mat::rows는 행렬의 행 개수를 나타내고, Mat::cols는 열 개수를 나타냅니다. 만약 Mat 객체에 정지 영상이 저장되어 있는 경우라면 Mat::rows는 영상의 세로 픽셀 크기이고, Mat::cols는 영상의 가로 픽셀 크기입니다. Mat::rowsMat::cols 멤버 변수는 Mat 객체가 2차원 행렬인 경우에만 의미 있는 값을 가지며, 3차원 이상의 행렬에서는 -1이 저장됩니다. 3차원 이상 행렬의 크기 정보는 Mat::size 멤버 변수를 이용하여 참조할 수 있습니다.4 Mat::data는 행렬의 원소 데이터가 저장되어 있는 메모리 공간을 가리키는 포인터형 멤버 변수입니다. 만약 행렬에 아무것도 저장되어 있지 않은 상태라면 Mat::data는 0(NULL) 값을 가집니다. Mat 클래스의 모든 멤버 변수는 public 접근 지시자로 선언되어 있어서 클래스 외부에서 직접 접근할 수 있습니다. 코드 3-6에 소개되지 않은 Mat 클래스 멤버 변수들은 활용성이 높지 않으므로 이 책에서는 설명을 생략합니다.

Note

Mat 클래스는 이름에서 알 수 있듯이 행렬(matrix)을 표현하는 클래스입니다. 그러나 OpenCV가 컴퓨터 비전 라이브러리이기 때문에 실제로는 일반적인 행렬보다는 2차원 영상을 표현하는 용도로 많이 사용됩니다. 그러므로 이 책에서는 Mat 클래스로 생성된 객체를 행렬이라고 표현하기도 하고, 영상이라고 부르기도 합니다. 앞으로 Mat 클래스 타입의 변수를 영상이라고 표현해도 혼동하지 않길 바랍니다.

 

4 Mat::size 멤버 변수의 타입인 MatSize는 3차원 이상의 행렬 크기를 표현하기 위해 사용되는 클래스입니다. MatSize 클래스에 대한 자세한 설명은 OpenCV 문서 사이트를 참고하기 바랍니다.

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