더북(TheBook)

코드 3-14에서 Matx 클래스는 작은 크기의 행렬을 표현하기 위해 만들어진 템플릿 클래스입니다. 이 행렬 클래스는 원소 데이터를 val이라는 이름의 배열에 저장합니다. 코드 3-14의 1행에서 _Tp는 행렬 원소 자료형이고, mn은 각각 행과 열 개수를 의미합니다. Vec 클래스는 Matx 클래스를 상속받아 만들어지며, 열 개수가 1개로 특화된 벡터 표현 클래스입니다. Vec 클래스도 템플릿을 사용하기 때문에 실제 코드에서 사용할 때에는 <> 괄호 사이에 데이터 자료형과 데이터 개수를 명시해야 합니다. 예를 들어 정수형 데이터 네 개를 가지고 있는 벡터라면 Vec<int, 4> 형식을 사용하고, uchar 자료형 세 개를 가지고 있는 벡터라면 Vec<uchar, 3> 형식으로 사용합니다. 특히 Vec<uchar, 3> 형식은 3채널 컬러 영상의 픽셀 값을 표현하는 용도로 자주 사용됩니다. 다음은 Vec<uchar, 3> 형식의 변수 p1, p2를 선언하는 예제 코드입니다.

Vec<uchar, 3> p1, p2(0, 0, 255);

그런데 매번 Vec<uchar, 3> 형태로 입력하는 것은 꽤 번거롭고 불편합니다. 다행히 OpenCV는 자주 사용되는 자료형과 개수에 대한 Vec 클래스 템플릿의 이름 재정의를 제공하며, 이를 이용하면 꽤 간단하게 원하는 크기와 자료형의 벡터를 표현할 수 있습니다. OpenCV에서 제공하는 Vec 클래스 템플릿의 이름 재정의는 다음 형식을 따릅니다.

Vec<num-of-data>{b|s|w|i|f|d}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.