더북(TheBook)

앞에 나타낸 << 연산자 재정의가 조금 복잡하게 느껴질 수도 있지만, 실제 사용하는 방법은 매우 간단합니다. << 연산자 왼쪽에는 std::cout을 적고, << 연산자 오른쪽에는 Mat 객체 변수 이름을 적으면 해당 행렬 원소가 모두 콘솔 창에 출력됩니다. 예를 들어 작은 크기의 행렬 원소를 모두 화면에 출력하려면 다음과 같이 코드를 작성할 수 있습니다.

float data[] = { 2.f, 1.414f, 3.f, 1.732f };
Mat mat1(2, 2, CV_32FC1, data);
 
std::cout << mat1 << std::endl;

이 코드에서 mat1float 자료형을 사용하는 2×2 행렬이고, 행렬 원소는 data 배열로 구성됩니다. 이 행렬을 << 연산자를 이용하여 std::cout 표준 출력 스트림으로 전달하면 콘솔 창에 다음과 같은 형태로 행렬 원소 값이 나타납니다.

[2, 1.414;
 3, 1.732]

즉, << 연산자를 이용하여 C++ 표준 출력 스트림으로 Mat 객체를 내보내면 [] 대괄호 안에 행렬 원소가 행과 열을 구분하여 출력됩니다. 각각의 원소는 콤마(,)로 구분되어 나타나고, 각 행은 세미콜론(;)으로 구분됩니다. 작은 크기의 행렬뿐만 아니라 큰 영상 객체에 대해서도 << 연산자를 이용하여 픽셀 값을 출력할 수 있지만, 콘솔 창에 너무 많은 숫자가 한꺼번에 나타날 수 있으므로 주의해야 합니다.

지금까지 설명한 행렬의 정보 참조 예제 코드를 모아 코드 3-11에 나타냈습니다. 코드 3-11의 MatOp5() 함수는 lenna.bmp 파일에서 불러온 레나 영상의 크기, 채널 수, 타입 정보를 확인하여 화면에 출력합니다. 그리고 작은 크기의 행렬을 정의하고, std::cout<< 연산자를 이용하여 행렬의 모든 원소를 화면에 출력합니다. 추후 Mat 객체의 정보를 참조할 경우에 MatOp5() 함수에 나열된 예제 코드를 참고하기 바랍니다.

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