사용자가 지정한 원소 값을 이용하여 Mat 객체를 생성하는 방법 중에 Mat_ 클래스를 사용하는 방법도 종종 사용됩니다. Mat_ 클래스는 Mat 클래스를 상속하여 만든 템플릿 클래스로서 Mat_ 클래스 객체와 Mat 객체는 상호 변환이 가능합니다. 그런데 Mat_ 클래스는 << 연산자와 콤마(,)를 이용하여 간단하게 행렬 원소 값을 설정하는 인터페이스를 제공합니다. 그래서 일단 Mat_ 객체를 만들어서 << 연산자로 행렬 원소를 지정한 후, 이를 Mat 객체로 변환하여 사용하기도 합니다. 실제 Mat_ 클래스를 사용하는 예제 코드를 살펴보겠습니다.
Mat_<float> mat5_(2, 3); mat5_ << 1, 2, 3, 4, 5, 6; Mat mat5 = mat5_;
앞 예제 코드의 첫 번째 행에서 변수 mat5_는 float 자료형을 사용하는 2×3 행렬입니다. Mat_ 클래스는 템플릿 클래스로 정의되어 있어서 저장할 원소의 자료형을 명시적으로 지정해야 합니다. 두 번째 행에서는 << 연산자와 콤마(,)를 이용하여 mat_ 행렬의 전체 여섯 개의 원소 값을 차례대로 지정하였습니다. 그리고 세 번째 행에서는 mat5_ 행렬을 복사하여 Mat 클래스 타입의 변수 mat5를 선언하였습니다. 그 결과 mat5 행렬은 2×3 크기를 갖고, 타입은 CV_32FC1이며 mat5_ 행렬과 원소를 공유합니다. 이후 mat5_ 변수를 사용하지 않는다면 앞에서 세 줄로 쓴 코드는 다음과 같이 한 줄로 간략하게 사용할 수 있습니다.
Mat mat5 = (Mat_<float>(2, 3) << 1, 2, 3, 4, 5, 6);
이렇게 생성된 mat5는 다음과 같은 형태의 행렬입니다.