OpenCV | Vec 클래스, Scalar 클래스, InputArray 클래스, OutputArray 클래스 정리

박나연·2021년 3월 17일
0

OpenCV

목록 보기
14/40

📔 Vec 클래스

하나의 행으로만 이루어진 행렬은 행벡터, 하나의 열로만 구성된 행렬은 열벡터이다. 행벡터와 열벡터를 합쳐서 벡터 혹은 벡터 행렬이라 부른다. 벡터는 같은 자료형을 가진 원소 몇개로 구성된 데이터 형식이다.

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

벡터를 표현할때에는 데이터의 자료형과 뎅터 개수를 명시해야한다.
Vec<uchar, 3> p1, p2(0,0,255);
위에서 Vec은 uchar 자료형 세개를 가지고 있는 벡터를 p1, p2로 선언한 예제이다. 주로 3채널 영상의 픽셀 값을 표현하는 용도로 사용된다.

그러나 위와 같이 Vec<uchar,3> 대신 더 간단하게 Vec3b 와 같이 표현 할 수 있으며 uchar뿐아니라 int, float, ushort 등과 같은 다양한 자료형에 대해서도 위와같이 표현할 수 있다.

각 벡터에 대해 배열의 원소를 다른 값으로 변경해주고 싶다면
p1.val[i] = 100; 또는 p1[i] = 100;와 같이 구현할 수 있다.


📔 Scalar 클래스

Scalar 클래스는 4채널 이하의 영상에서 픽셀 값을 표현하는 용도로 사용된다. Scalar 클래스 템플릿 이름 재정의 이다. Scalar 클래스는 템플릿 클래스 이므로 다양한 자료형에 대해 정의할 수 있고, 그 중 double 자료형을 사용하는 경우에는 Scalar 라고 재정의된 이름을 사용할 수 있다.

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

위와 같이 Scalar 클래스 객체를 생성할 수 있다.

Scalar yellow(0, 255, 255);
Mat img1(256,256, CV_8UC3, yellow);
for(int i = 0 ; i < 4; i++)
	cout << yellow[i] << endl;

위와 같이 Scalar 객체 yellow로 색상을 정의하고, Mat 객체인 256x256 크기의 컬러 영상 img1 을 생성할 수 있다.
0 255 255 0


📔 InputArray 클래스

인터페이스 클래스로서 OpenCV 함수의 입력 인자 자료형으로 사용된다.

InputArray 타입으로 파라미터 입력을 받고 그것을 getMat() 함수를 통해 Mat 객체로 바꾸어 사용할 수 있다.


📔 OutputArray 클래스

출력 영상을 함수의 return 구문이 아닌 outputarray 클래스의 참조를 함수인자로 사용하여 결과 영상을 전달한다.

create() 함수를 통해 결과영상을 저장할 새로운 행렬을 먼저 생성한 후 처리 결과를 저장하는 형태로 구현된다.

profile
Data Science / Computer Vision

0개의 댓글