Point_

OpenCV docs : Point_

  • 2차원 점의 좌표 표현을 위한 클래스

  • 맴버 변수 : x, y

  • 맴버 함수 : dot()내적 계산, ddot() double타입 내적 계산, cross() 외적 계산, inside() 점이 사각형 안에 존재하는지 확인 등등...

  • 다양한 사칙 연산에 대한 오버로딩 지원

  • std::cout출력을 위한 <<연산자 오버로딩 지원

Point_클래스의 다양한 예시를 살펴 보자.

Point pt1, pt2(4, 3), pt3(2, 4);    // pt1 = [0, 0]
int a = 2;

pt1 = pt2 + pt3;    // pt1 = [6, 7]
pt1 = pt2 - pt3;    // pt1 = [2, -1]
pt1 = pt3 * a;    // pt1 = [4, 8]
pt1 = a * pt3;    // pt1 = [4, 8]
pt1 = pt3 / a;    // pt1 = [1, 2]
pt1 = a / pt3;    // Error! : 이러한 피연산자와 일치하는 "/" 연산자가 없습니다.
pt1 += pt2;    // pt1 = [5, 5]
pt1 -= pt2;    // pt1 = [1, 2]
pt1 *= a;    // pt1 = [2, 4]
pt1 /= a;    // pt1 = [1, 2]

double v = norm(pt2);   // v = 5.0
// norm() : pt2로 만들어지는 대각선의 크기를 반환(벡터를 생각하자)

bool b1 = pt1 == pt2;   // b1 = false
bool b2 = pt1 != pt2;   // b2 = true

cout << pt1 << endl;    // output : [1, 2]

Size_

OpenCV docs : Size_

  • 영상 또는 사각형의 크기 표현을 위한 탬플릿 클래스

  • 맴버 변수 : width, height

  • 맴버 함수 : area() 면적 계산 함수

  • 다양한 사칙 연산에 대한 오버로딩 지원

  • std::cout출력을 위한 <<연산자 오버로딩 지원

Rect_

OpenCV docs : Rect_

  • 2차원 사각형 표현을 위한 탬플릿 클래스

  • 맴버 변수 : x, y, width, height

  • 맴버 함수 : tl() Top Left, br() Bottom Right, size() Width & Hight, area() 사각형의 크기 반환, contains() 어떤 점이 사각형 안에 포함되었는지 반환

  • 다양한 사칙 연산에 대한 오버로딩 지원

  • std::cout출력을 위한 <<연산자 오버로딩 지원

Rect_클래스 예시

Rect rc1;                        // rc1 = [0x0 from (0, 0)]
Rect rc2(10, 10, 60, 40);        // rc2 = [60x40 from (10, 10)]
Rect rc3 = rc1 + Size(50, 40);   // rc3 = [50x40 from (0, 0)]
Rect rc4 = rc2 + Point(10, 10);  // rc4 = [60x40 from (20, 20)]
Rect rc5 = rc3 & rc4;            // rc5 = [30x20 from (20, 20)]
Rect rc6 = rc3 | rc4;            // rc6 = [80x60 from (0, 0)]

Range

OpenCV docs : Range

  • 정수 값의 범위를 나타내기 위한 클래스
  • 맴버 변수 : start, end
  • 맴버 함수 : size(), empty(), all()
  • 흔히 알다싶이, [start, end)로 구성된다.

String

typedef std::string cv::String
  • 원래 OpenCV에서 자체적으로 정의해 사용하던 문자열 클래스
    • OpenCV 4.x 버전부터 std::string클래스로 대체
  • C언어의 printf()함수와 비슷하게 사용 가능.

Vec

OpenCV docs : Vec

  • 같은 자료형 원소 여러 개로 구성된 데이터 형식.
    • C++std::vector와 같다.
  • std::cout출력을 위한 <<연산자 오버로딩 지원

Scalar_

OpenCV docs : Scalar_

  • 크기가 4인 double배열을 맴버 변수로 가지는 클래스.
  • 4채널 이하 영상에서 픽셀 값을 표현하는 용도로 자주 사용(B, G, R, Alpha).
  • []연산자를 통해 원소에 접근 가능.

Mat

OpenCV docs : Mat

  • n차원 다채널 행렬 표현을 위한 클래스.
  • 다양한 형태의 행렬 생성, 복사, 연산 기능 제공
  • 행렬의 원소 접근 방법 제공 : Mat::data 맴버 변수 사용

Mat 클래스 사용시 기억해야 할 3가지 개념

1. Mat 클래스의 깊이(depth)

  • 행렬 원소가 사용하는 자료형 정보를 가리키는 매크로 상수.
  • Mat::depth()맴버 함수를 이용하여 참조
  • 형식은 CV_<bit-depth>{U|S|F}
    • ex) CV_32S : 32bit, short 자료형

2. Mat 클래스의 채널(channel)

  • 원소 하나가 몇 개의 값으로 구성되어 있는지
  • Mat::channels()함수를 이용하여 참조
  • 형식은 C{N}
    • ex) C4 : 4채널

3. Mat 클래스의 타입(type)

  • 행렬의 깊이, 채널 수를 한 번에 나타내는 매크로 상수
  • Mat::type()함수를 이용하여 참조
  • 형식은 CV_<bit-depth>{U|S|F}C{N}
    • ex) CV_8UC1 : 8bit, uchar or Unsigned char, 1채널
    • 그러니까, 타입 = 깊이+채널

Mat클래스 함수에 대해 여기서 더 알아보기

_InputArray와 _OutputArray

OpenCV docs : _InputArray

  • Mat클래스를 대체하는 프록시 클래스
  • 보통 OpenCV 함수에서 입력 인자로 사용된다.

OpenCV docs : _OutputArray

  • OpenCV함수에서 출력 인자로 사용되는 프록시 클래스
profile
올해로 26세

0개의 댓글