행렬 합, 평균, 최대/최소 구하기
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 |