프로그래밍/컴퓨터 비전 with openCV

Mat 클래스 ( 개요 - Mat 행렬의 깊이, 채널, 타입 )

Jay_rock 2022. 3. 17. 03:24

Mat 행렬에서 어떤 자료형을 사용하는지에 대한 정보를 깊이 "depth" 라고 부른다.

C/C++ 기본 자료형 중에서 unsigned char, signed char, unsigned short, signed short, int float, double 자료형을 지원하고, openCV 4 부터 16비트 실수형도 지원한다. Mat 행렬의 깊이를 다음과 같이 형식을 이용하여 나타낸다.

 

CV_<bit-depth>{U:S:F}
bit-depth -> 비트 수,  {U:S:F} -> U: unsigned, S: signed, F: float

예를 들어 unsigned char 자료형을 사용하면 CV_8U, float 자료형을 사용하면 CV_32F 로 나타낼 수 있다.

 

 

 

Mat 행렬은 원소를 하나만 갖는 것이 아니라 2개 이상도 갖을 수 있다. 우리는 원소를 구성하는 각각의 값을 채널 "channel"이라고 부른다. 여기서 하나의 채널을 구성하는 값은 모두 같은 자료형을 사용해야 한다. 예를 들면 그레이스케일 영상은 하나의 채널을 사용하고, 트루컬러 영상은 3개의 채널을 사용한다고 볼 수 있다. 여기서 행렬의 깊이와 채널을 합쳐서 Mat 객체의 타입 "type"이라 부른다. 이것 역시 다음과 같은 형식을 이용하여 나타낸다.

 

CV_<bit-depth>{U:S:F}C(<number_of_channels>)
bit-depth -> 비트 수,  {U:S:F} -> U: unsigned, S: signed, F: float,  <number_of_channels> -> 채널의 개수

예를 들어 unsigned char 자료형을 사용하는 컬러 영상이라면 CV_8UC3 타입이라고 말할 수 있다.

 

새로운 행렬을 생성할 때에는 행렬의 타입 정보를 명시적으로 지정해야 한다.

 

 

 

 

더 자세한 설명은 openCV 문서 페이지에서 확인 가능합니다.
https://docs.opencv.org/3.4/d3/d63/classcv_1_1Mat.html

 

OpenCV: cv::Mat Class Reference

n-dimensional dense array class More... #include  Mat () CV_NOEXCEPT    Mat (int rows, int cols, int type)    Mat (Size size, int type)    Mat (int rows, int cols, int type, const Scalar &s)    Mat (Size size, int type, const Scalar &s)    Mat (

docs.opencv.org

 

본 내용은 < OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝(저자 : 황선규) > 내용을 참고하여 작성되었습니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=14722394