컴퓨터 비전

OpenCV 유용한 기능

Jagbbum 2023. 10. 18. 12:20

행렬 합, 평균, 최대/최소 구하기

Scalar sum(InputArray src); // 합

에시
unchar data[] = {1,2,3,4,5,6};
Mat mat1(2,3, CV_8UC1, data);

int sum1 = (int)sum(mat1)[0];
-------------------------------
Scarlar mean(InputArray src, InputArray mask = noArray()); // 평균

예시
Mat img = imread("lenna.bmp", IMREAD_GRAYSCALE);

double mean1 = mean(img); // m[0]: blue 평균 m[1]: green 평균 m[2]: red 평균 
--------------------------------
void minMacLoc(InputArray src, souble* minVal, double* macVal = 0,
              Point* minLoc = 0, Point* maxLoc = 0, InputArray mask = noArray());
// 최대 최소
예시
double minv, maxv;
Point minLoc, maxLoc;
minMaxLoc(img, &minv, &maxv, &minLoc, &maxLoc);

영상 속성 변환

void Mat::convertTo(OutputArray m, int rtype, double alpha=1(곱할 값), double beta=0(더할 값)) const;
// 자료형 변환
예시
Mar fimg;
img.convertTo(fimg, CV_32FC1);

--------------------------------
void nrmalize(InputArray src, InputOutputArray dst, souble alpha = 1; double beta = 0,
		     int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray());
// 행렬 정규화
예시
Mat dstl
normalize(src, dst, 0, 255, NORM_MINMAX);

--------------------------------
void cvtCOlor(InputArray src, OutputArray dstm int codem ind dstCn = 0);
// 색 공간 변화 함수
예시
Mat dst;
cvtColor(src, dst, COLOR_BGR2GRAY);

--------------------------------
void split(const MAt& srx, MAt*mvbegin);
void split(InputArray src, OuputArrayOfArrays mv);
// 채널 분리

예제
vector<Mat> planes;
split(src, planes);

--------------------------------
void merge(const Mat* mv, size_t count, OuputArray dst);
void merge(InputArrayOfArrays mv, OuputArray dst);
// 채널 결합

예제
vector<Mat> planes;
split(src, planes);

swap(planes[0], planes[2]);

Mat dst;
merge(planes, dst);

연산 시간 측정

// 기본적인 방법
int64 t1 = getTickCount();

my_func();

int64 t2 = getTickCount();
double ms = (t2 - t1) * 1000 / getTickFrequency();

-------------------------------------

// TickMeter 클래스

class TickMeter
{
public :
	TickMeter();
    
    void start();
    void stop();
    void reset();
    
    double getTimeMicro() const;
    double getTimeMilli() const;
    double getTimeSec() const;
    ...
};

마스크 연산과 ROI

관심 영역(ROI)

마스크 연산

- 일부 함수에 대해 ROI 연산을 할 때 마스크 영상을 인자로 함꼐 전달

// 마스크 연산을 지원하는 픽셀 값 복사 함수
void MAt::copyTo(InputArray m, InputArray mask) const;
m: 출력

// 마스크 연산을 지원하는 픽셀 값 복사 함수(전역 함수)
void copyTo(InputArray src, OutPutArray dst, InputArray mask);
src: 입력, dst: 출력

'컴퓨터 비전' 카테고리의 다른 글

OpenCV 영산의 산술  (0) 2023.10.19
OpenCV 히스토그램  (0) 2023.10.19
OpenCV 영상 조절  (0) 2023.10.19
OpenCV 기초  (0) 2023.10.17
영상 데이터와 파일 형식  (0) 2023.10.16