본문 바로가기
Computer Vision

OpenCV 주요 기능 - 5. 유용한 OpenCV 기능

by ksb0511 2020. 2. 14.

1. 마스크 연산

1)  setTo(InputArray value, InputArray mask = noArray()) 함수

  • 행렬의 픽셀 값을 설정하기 위해서는 setTo() 멤버 함수를 사용해야 함. 이 함수는 마스크 연산을 지원하는 함수로, 아래 링크에 setTo() 멤버 함수 설명이 들어 있음.

2020/02/09 - [Computer Vision] - OpenCV 주요 클래스 - 2. Mat 클래스(2)

 

OpenCV 주요 클래스 - 2. Mat 클래스(2)

2. 행렬의 생성과 초기화 // 1. Mat 객체 생성 Mat::Mat(int rows, int cols, int type); // 세로, 가로 순서로 입력 Mat::Mat(Size size, int type); // Size 클래스 내부에 값 지정 시 가로, 세로 순서로 입력 /..

ksb0511.tistory.com

  • 마스크 영상은 Mat::setTo()를 호출하는 대상 행렬과 크기가 같아야 함.

2) copyTo(Output Array m, InputArray mask) const 함수

 

2020/02/12 - [Computer Vision] - OpenCV 주요 클래스 - 2. Mat 클래스(3)

 

OpenCV 주요 클래스 - 2. Mat 클래스(3)

3. 행렬의 복사 // 메모리 공간을 새로 할당하여 픽셀 데이터 전체를 복사 ( 깊은복사 ) Mat Mat::clone() const; void Mat::copyTo( OutputArray m ) const; void Mat::copyTo( OutputArray m, InputArray mask )..

ksb0511.tistory.com

  • 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);

 

  • 실수값의 반올림 연산을 하는 함수

댓글