더북(TheBook)

예를 들어 현재 다루고 있는 영상 객체가 그레이스케일 영상인지 혹은 3채널 컬러 영상인지를 확인하려면 Mat::type() 멤버 함수를 이용할 수 있습니다. 일반적으로 그레이스케일 영상은 CV_8UC1 타입을 사용하며, 3채널 컬러 영상은 CV_8UC3 타입을 사용합니다. 그러므로 Mat::type() 함수의 반환값이 CV_8UC1이면 그레이스케일 영상으로 간주하고, CV_8UC3이면 3채널 트루컬러 영상이라고 생각할 수 있습니다. 실제로 앞에서 사용한 예제 코드에서 img1에 저장된 레나 영상이 그레이스케일 영상인지 컬러 영상인지를 확인하는 문자열을 출력하려면 다음과 같이 코드를 작성할 수 있습니다.

if (img1.type() = = CV_8UC1)
  cout << "img1 is a grayscale image." << endl;
else if (img1.type() = = CV_8UC3)
  cout << "img1 is a truecolor image." << endl;

앞에서 lenna.bmp 파일로부터 img1 영상을 불러올 때, imread() 함수의 두 번째 인자를 설정하지 않았으므로 img1 영상은 3채널 컬러 영상으로 생성됩니다. 그러므로 img1 영상의 타입은 CV_8UC3이고, 앞 예제 코드는 다음 문자열을 출력합니다.

img1 is a truecolor image.

Mat 객체에 저장된 행렬 속성 정보가 아니라 행렬 원소 값을 직접 확인하고 싶은 경우도 있습니다. 만약 Mat 클래스에 저장된 객체가 영상이라면 imshow() 함수를 이용하여 화면에 표시할 수 있습니다. 그러나 Mat 객체에 int, float, double 같은 자료형의 행렬이 저장되어 있는 경우라면 imshow() 함수를 사용하는 것이 적절하지 않습니다. 이런 경우에는 C++ 표준 출력 스트림 std::cout으로 Mat 객체에 저장된 행렬 원소를 출력할 수 있습니다. OpenCV는 << 연산자 재정의를 이용하여 행렬 원소를 출력하는 기능을 제공합니다.

static inline
std::ostream& operator << (std::ostream& out, const Mat& mtx)

out

C++ 표준 출력 스트림 객체

mtx

출력할 행렬

반환값

C++ 표준 출력 스트림 객체의 참조

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