:)
OpenCV 주요 클래스 본문
Point_ 클래스
- 2차원 점의 좌표 표현을 위한 템플릿 클래스
- 멤버 변수 : x,y
- 멤버 함수 : dot()(내적), ddot()(double dot), cross()(외적), inside()(어떠한 점이 사각형에 존재하는지) 등
- 다양한 사칙 연산에 대한 연산자 오버로딩과 << 연산자 오버로딩을 지원
typedef Point_<int> Point2i;
typedef Point_<int64> Point2l;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;
typedef Point2i Point;
Size_ 클래스
- 영상 또는 사각형의 크기 표현을 위한 템플릿 클래스
- 멤버 변수 : width, height
- 멤버 함수 : area()
- 사칙연산, 출력을 위한 << 연산자 오버로딩을 지원
typedef Size2i Size;
Rect_ 클래스
- 2차원 사각형 표현을 위한 템플릿 클래스
- 멤버 변수 : x, y, width, height
- 멤버 함수 : tl() (top left), br() (bottom right), size(), area(), contains() (어떠한 점이 사각형에 포함되어있는지)
- 사칙연산, 출력을 위한 << 연산자 오버로딩을 지원
typedef Rect2i Rect;
Range 클래스
- 정수 값의 범위를 나타내기 위한 클래스
- 멤버 변수 : start, end
- 멤버 함수 : size(), empty(), all()
- start는 범위에 포함되고, end는 범위에 포함되지 않음 [start, end)
Scalar 클래스
- 크기가 4인 double 배열을 멤버 변수로 가지고 있는 클래스
- 4채널 이하의 영상에서 픽셀 값을 표현하는 용도로 자주 사용
- []연산자를 통해 원소에 접근 가능
typedef Scalar_<double> Scalar; -> 4개의 double형 데이터를 가지는 자료형(val[0],val[1],val[2],val[3]);
Mat 클래스
- Mat 클래스의 깊이(depth)
- 행렬 원소가 사용하는 자료형 정보를 가리키는 매크로 상수
- Mat::depth() 함수를 이용하여 참조
- 형식 : CV_{U|S|F}
- Mat 클래스의 채널(channel)
- 원소 하나가 몇 개의 값으로 구성되어 있는가
- channels() 함수를 이용하여 참조
- ex) 그레이스케일 영상은 픽셀 하나 당 밝기 값 1개, 트루컬러 영상은 픽셀 하나 당 B G R 색상 성분 3개
- Mat 클래스의 타입(type)
- 행렬의 깊이와 채널 수를 한꺼번에 나타내는 매크로 상수
- type() 함수를 이용하여 참조
- ex) CV_8UC1 -> (8:비트수 U:정수형의 부호(s/u) or 실수형(F) 1:채널수)
Mat 클래스 객체의 참조와 복사
- Mat 객체에 대해 = 연산자는 참조(얕은 복사)를 수행 (같은 메모리 공간을 가짐)
- Mat::clone() 또는 Mat::copyTo() 함수를 이용하여 깊은 복사를 수행 (분리된 메모리 공간)
Mat 영상의 픽셀 값 접근하기
OpenCV에서 제공하는 기능이 아니라 자신만의 새로운 기능을 추가해야 하는 경우에 유용
Mat::at() : 좌표 지정이 직관적. 임의의 좌표에 접근할 수 있음
- at(y,x)
Mat::ptr() : at() 보다 빠르게 동작. 행 단위 연산을 수행할 때 유리
ptr(y)
for (int y=0; y < mat.rows; y++) { uchar* p = mat1.ptr<uchar>(y); for (int x=0; x < mat1.cols; x++) { p[x]++; } }
Matlterator_ 반복자 : 좌표를 지정하지 않아서 안전. 성능은 느린 편
for ( MatIterator_<uchar> it = mat1.begin<uchar>(); it != mat1.end<uchar>(); ++it) { (*it)++; }
'컴퓨터비전' 카테고리의 다른 글
OpenCV 그리기 함수 (0) | 2022.03.18 |
---|---|
카메라와 동영상 처리 (0) | 2022.03.17 |
OpenCV 영상 불러와서 출력하기 (0) | 2022.03.15 |
영상 데이터 구조와 표현 방법 / 영상 파일 형식과 특징 (0) | 2022.03.14 |
컴퓨터 비전 개요 (0) | 2022.03.14 |
Comments