1. 마스크 연산
1) setTo(InputArray value, InputArray mask = noArray()) 함수
- 행렬의 픽셀 값을 설정하기 위해서는 setTo() 멤버 함수를 사용해야 함. 이 함수는 마스크 연산을 지원하는 함수로, 아래 링크에 setTo() 멤버 함수 설명이 들어 있음.
2020/02/09 - [Computer Vision] - OpenCV 주요 클래스 - 2. Mat 클래스(2)
- 마스크 영상은 Mat::setTo()를 호출하는 대상 행렬과 크기가 같아야 함.
2) copyTo(Output Array m, InputArray mask) const 함수
2020/02/12 - [Computer Vision] - OpenCV 주요 클래스 - 2. Mat 클래스(3)
- mask 영상의 픽셀 값이 0이 아닌 위치에서만 *this 행렬 원소 값을 행렬 m으로 복사.
2. 연산 시간 측정
// 특정 연산의 수행 시간 측정
int64 getTickCount(void)
double getTickFrequency(void)
- getTickCount 함수는 특정 시점부터 현재까지의 발생한 틱 횟수를 반환
- .틱 횟수 : 컴퓨터 시스템에서 발생하는 성능 측정 계수
- 특정 연산의 시간 측정 위해선 두 함수를 같이 조합해서 사용. 이것이 번거로운 경우 TickMeter 함수 대신 사용 가능.
TickMeter함수
- 시간 측정 시작하는 위치에서 TickMeter 타입의 변수.start()를 호출. 그리고 마치는 위치해서 stop을 호출함.
- start()와 stop() 사이의 간격은 TickMeter 내부 멤버 변수에 저장.
3. 유용한 OpenCV 함수 사용법
// sum(), mean() 함수
Scalar sum(InputArray src);
Scalar mean(InputArray src, InputArray mask = noArray());
- sum은 합, mean은 평균을 구할 때 사용.
- mean 함수는 마스크 연산을 지원하므로 mask 영상을 지정하여 특정 영역의 원소 평균 구하기 가능.
- Scalar 자료형을 반환.
// minMaxLoc() 함수
void minMaxLoc(InputArray src, double* minVal,
double* maxVal = 0, Point* minLoc = 0,
Point* maxLoc = 0, InputArray mask = noArray());
- 최솟값, 최댓값, 그 위치들을 찾을 때 사용
- minMaxALoc 함수는 마스크 연산을 지원.
- 만약 네가지 값들 중 한가지 값만 알고 싶다면 나머지 알고 싶지 않은 인자에는 0(NULL)값을 입력.
// normalize() 함수
void normalize(InputArray src, InputOutputArray dst,
double alpha = 1, double beta = 0,
int norm_type = NORM_L2, int dtype = -1,
InputArray mask = noArray());
- norm_type에 따라 동작이 결정됨.
- norm_type은 수식을 만족하도록 입력 행렬 원소 값의 크기를 조정.
- 실수로 구성된 행렬을 그레이스케일 영상 형태로 변환하고자 할 때 normalize() 함수 사용하는 게 유용.
// cvRound() 함수
int cvRound(double value);
int cvRound(float value);
- 실수값의 반올림 연산을 하는 함수
'Computer Vision' 카테고리의 다른 글
영상의 밝기와 명암비 조절 - 2. 영상의 명암비 조절 (0) | 2020.02.18 |
---|---|
영상의 밝기와 명암비 조절 - 1. 영상의 밝기 조절 (0) | 2020.02.15 |
OpenCV 주요 기능 - 4. OpenCV 데이터 파일 입출력 (0) | 2020.02.14 |
OpenCV 주요 기능 - 3. 이벤트 처리 (0) | 2020.02.13 |
OpenCV 주요 기능 - 2. 다양한 그리기 함수 (0) | 2020.02.13 |
댓글