본문 바로가기
런닝머신 (ML)

[컴퓨터 비전 & 머신러닝] Vec과 Scalar 클래스

728x90

Vec 클래스 : 작은 개수의 원소로 구성된 벡터를 표현하는 클래스, OpevCV에서 유용하게 사용된다.

 

Vec<num-of-data>{b|s|w|i|f|d}

 

<num-of-data>에는 2, 3, 4 등 작은 숫자를 지정할 수 있다

b는 uchar

s는 short

w는 ushort

i는 int

f는 float

d은 double 자료형을 의미

typedef Vec<uchar, 2> Vec2b; //2~4
typedef Vec<short, 3> Vec3c; //2~4
typedef Vec<ushort, 4> Vec4w; //2~4
typedef Vec<int, 8> Vec8i; //2, 3, 4, 6, 8
typedef Vec<float, 6> Vec6f; //2, 3, 4, 6
typedef Vec<double, 6> Vec6d; //2, 3, 4, 6
Vec3b p1, p2(0, 0, 255); //Vec<uchar, 3>
//p1은 0으로 전부 초기화
//p2는 0, 0, 255로 초기화
p1[0] = 100; 
cout << "p1: " << p1 << endl;
//p1: [100, 0, 0]
cout << "p2: " << p2 << endl;
//p2: [0, 0, 255]

 


Scalar 클래스 : Mat 클래스 다음으로 자주 사용하는 클래스, 4채널 이하의 영상에서 픽셀 값을 표현하는 용도로 사용

Scalar(밝기)

Scalar(파란색, 녹색, 빨간색)

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

Scalar gray = 128;
cout << "gray: " << gray << endl;
//gray: [128, 0, 0, 0]

Scalar yellow(0, 255, 255);
cout << "yellow: " << yellow << endl;
//yellow: [0, 255, 255, 0]

Mat img1(256, 256, CV_8UC3, yellow); //노란색으로 초기화 된 256x256 크기의 컬러 영상 img1 생성

for (int i = 0; i < 4; i++)
	cout << yellow.val[i] << ", " << yellow[i] << endl;
/*
0, 0
255, 255
255, 255
0, 0
*/

 

728x90