1. Vec 클래스

 

Vec 클래스는 다양한 OpenCV 프로그래밍에서 유용하게 사용되고 있으며, 특히 Vec3b, Vec4i, Vec2f 등 이름으로 재정의되어 사용되고 있다.

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

Vec 클래스는 템플릿을 사용하기 때문에 자료형과 데이터 개수를 명시해야 한다.

 

Vec<uchar, 3> p1, p2(0, 0, 255);

 

위와 같은 방식으로 입력하는 것에 번거로움이 있어 OpenCV에서 이름 재정의를 제공한다.

 

typedef Vec<uchar, 3> Vec3b;

 

Vec3b p1, p2(0, 0, 255);

 

다음과 같이 변수를 선언할 경우 p1과 p2는 각각 내부에 uchar val[3]; 형식의 멤버 변수를 가진다.

만약 p1 변수의 첫 번째 원소를 100으로 변경하고 싶다면 다음과 같이 표현할 수 있다.

 

p1.val[0] = 100; 

 

그런데 Vec 클래스는 [] 연산자 재정의가 되어 있기 때문에 다음과 같이 쉽게 접근 가능하다.

 

p1[0] = 100;

 

 

2. Scalar 클래스

 

OpenCV 프로그래밍에서 Mat 클래스 다음으로 자주 사용되는 클래스이다.

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

Scalar 클래스는 Scalar_ 템플릿 클래스의 double형 이름 재정의 이며 Scalar_ 클래스는 Vec 클래스를 상속한다.

 

typedef Scalar_<double> Scalar;

 

Scalar 클래스 객체 생성 방법

 

Scalar(밝기)

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

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

 

 

 

3. InputArray 클래스

 

 

4. OutputArray 클래스

 

영상 입력 -> 영상 처리 수행 -> 반환

반환 시 return 구문으로 반환하는 것이 아니라 보통 OutputArray 클래스의 참조를 함수 인자로 사용하여

결과 영상을 전달

함수 (InputArray, OutputArray)

'OpenCV' 카테고리의 다른 글

다양한 그리기 함수  (0) 2020.03.23
카메라와 동영상 파일 다루기  (0) 2020.03.23
기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
기본 자료형 클래스(1)  (0) 2020.03.10

1. Point_

2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스

2차원 좌표를 나타내는 x와 y 멤버 변수를 가짐

 

멤버 함수

 

Point::dot()

두 점 사이의 내적을 계산하여 반환

 

Point::ddot()

두 점 사이의 내적을 실수형으로 계산하여 double 형으로 반환

 

Point::cross()

두 점 사이의 외적을 반환

 

Point::inside()

점의 좌표가 사각형 r 영역 안에 있으면 true를 반환

 

 

템플릿 함수이므로 여러 자료형 사용 가능

 

정수형(int) : Point2i (Point)

정수형(int64) : Point2l

실수형(float) : Point2f

실수형(double) : Point2d

 

 

2. Size_

영상 또는 사각형 영역의 크기를 표현하는 템플릿 클래스

사각형 영역의 가로와 세로 크기를 나타내는 width와 height 멤버 변수를 가짐

 

멤버 함수

 

Size::area()

사각형 크기에 해당하는 면적(w x h)을 반환

 

Size::empty()

유효하지 않은 크기이면 true 반환

 

int : Size2i (Size)

int64 : Size2l

float : Size2f

double : Size2d

 

 

3. Rect_

사각형의 위치와 크기 정보를 표현하는 템플릿 클래스

좌측 상단 점의 좌표(x, y), 가로 및 세로 크기(width, height) 멤버 변수 가짐

 

멤버 함수

 

Rect::tl()

사각형의 좌측 상단 점의 좌표 반환

 

Rect::br()

사각형의 우측 하단 점의 좌표 반환

 

Rect::size()

사각형의 크기 정보 반환

 

Rect::area()

사각형의 면적 반환

 

Rect::empty

유효하지 않은 사각형이면 true 반환

 

Rect::contains()

인자로 전달된 pt 점이 사각형 내부에 있으면 true 반환

 

int : Rect2i (Rect)

float : Rect2f

double : Rect2d

 

 

4. RotatedRect

회전된 사각형을 표현하는 클래스

중심 좌표를 나타내는 center, 가로 및 세로 크기를 나타내는 size, 회전 각도를 나타내는 angle 멤버 변수 가짐

템플릿 클래스x 모든 정보를 float 자료형을 사용하여 표현

중심점 좌표는 Point2f, 크기 정보는 Size2f, 회전 각도는 float 사용

 

멤버 함수

 

RotatedRect::points()

회전된 사각형 객체의 네 꼭지점 좌표 반환

 

RotatedRect::boundingRect()

RotatedRect::boundingRect2f() (실수형)

회전된 사각형을 감싸는 최소 크기의 사각형 반환

 

 

5. Range

범위 또는 구간을 표현하는 클래스

범위의 시작과 끝을 나타내는 start와 end 멤버 변수 가짐(start는 범위에 포함, end는 포함하지 않음)

 

멤버 함수

 

Range::size()

함수의 크기(end - start)를 반환

 

Range::empty()

start와 end가 같으면 true 반환

 

Range::all()

start = INT_MIN, end = INT_MAX로 설정한 Range 객체 반환

 

 

6. String

OpenCV 라이브러리에서는 자체적인 String 클래스를 정의하여 사용

std::string 클래스와 완전히 호환되도록 설계되어 있음

OpenCV 4.0 버전부터는 std::string 클래스를 String으로 재정의하여 사용

 

 

'OpenCV' 카테고리의 다른 글

기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
OpenCV 사용 이미지 띄워보기  (0) 2020.03.10
프로젝트 생성 및 설정  (0) 2020.03.08
OpenCV 설치 및 환경 변수 설정(Window)  (0) 2020.03.08

아래의 코드를 이용해서 lena.jpg 이미지를 띄워보자

 

코드

 

 

12행 : Mat 클래스의 img 객체를 선언

13행 : imread 함수를 이용하여 lena.jpg를 Mat 형태로 반환하여 img에 저장

21행 : namedWindow함수를 이용하여 "image"라는 이름의 새 창을 생성

22행 : imshow 함수를 이용하여 "image" 창에 img에 저장된 이미지 출력

24행 : waitKey함수를 이용하여 키보드에 입력 신호가 들어올 때까지 대기(이미지 창을 대기)

 

코드를 모두 작성하였다면 실행시키기 전에 lena.jpg 이미지를 인터넷을 통해 다운로드 받거나

opencv 폴더 안에서 찾아서 현재 사용 중인 Visual Studio 프로젝트 폴더 안에 넣는다.

 

 

결과 화면

 

'OpenCV' 카테고리의 다른 글

기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
기본 자료형 클래스(1)  (0) 2020.03.10
프로젝트 생성 및 설정  (0) 2020.03.08
OpenCV 설치 및 환경 변수 설정(Window)  (0) 2020.03.08

+ Recent posts