본문 바로가기

컴퓨터 비전 study

Open CV Vec와 Scalar 클래스

1. Vec 클래스

벡터는 같은 자료형을 가진 원소 몇개로 구성된 데이터 형식   

                     //Matx 클래스 - 작은 크기의 행렬을 표현하기 위해 만들어진 템플릿 클래스

 

Vec클래스 : Matx 클래스를 상속받아 만들어지며, 열 개수가 1개로 특화된 벡터 표현 클래스

                템플릿을 사용하기 때문에 실제 코드에선 <>괄호 사이에 데이터 자료형과 데이터 갯수 명시해야함

Vec<num-of-data>{b|s|s|i|f|d}              // num-of-data 부분에 2,3,4등 작은 숫자 지정가능, b는 uchar , s는 short, 

                                                      w는 ushort, i는 int, f는 float, d는 double 자료형 의미

 

Vec 클래스는 아래와 같이 []연산자가 재정의 되어있다.

template<typename _TP, int cn> inline

_TP& Vec<_TP,cn>::operator [](int i)

{

   CV_DbgAssert( (unsigned) i < (unsigned) cn );        //CV_DbgAssert() 매크로 함수- 디버그모드에서만 동작하는 예외

   return this->val[i];                                              처리 코드, 릴리스 모드에선 무시

 }

 

2. Scalar 클래스

4채널 이하의 영상에서 픽셀 값을 표현하는 용도, Vec 클래스를 상속받아 만들어졌다.

Vec 클래스처럼 std::cout와 <<연산자를 이용하여 원소값을 간단하게 출력할 수 있다.

 

자주 사용되는 객체 생성 방법

Scalar(밝기)   // 나머지 0

Scalar(파란색,녹색, 빨간색)   // 나머지 0

Scalar(파란색, 녹색, 빨간색, 투명도)

 

원소 값을 참조할때 Scalar 클래스 또한 Vec 클래스처럼 []연산자 재정의를 사용한다.

 

'컴퓨터 비전 study' 카테고리의 다른 글

InPutArray와 OutputArray  (0) 2020.02.26
OpenCv Mat 클래스(3)  (0) 2020.02.26
Open CV Mat 클래스(2)  (0) 2020.02.19
OpenCV Mat 클래스(1)  (0) 2020.02.14
OpenCV 기본 자료형 클래스  (0) 2020.02.14