TickMeter 클래스 사용
영상 반전에 걸리는 연산 시간을 측정
void time_inverse() {
Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Image load failed!" << endl;
return;
}
Mat dst(src.rows, src.cols, src.type());
TickMeter tm; // 객체 생성
tm.start(); // 측정 시작
for (int j = 0; j < src.rows; j++) {
for (int i = 0; i < src.cols; i++) {
//dst.at<uchar>(j, i) = 255 - src.at<uchar>(j, i); // 영상 반전
dst.at<uchar>(j, i) = ~src.at<uchar>(j, i);
}
}
tm.stop(); // 측정 종료
// 측정 시간을 ms 단위로 반환
cout << "Image inverse took " << tm.getTimeMilli() << "ms." << endl;
// 디버그 모드로 빌드할 경우에는 디버깅을 위한 연산이 추가되기 때문에
// 영상 처리만을 위한 정확한 연산 시간을 측정할 수 없음
}
getTickCount() 와 getTickFrequency() 함수 사용
getTickCount 와 GetTickCount() 는 다른 함수이다. (참고 : https://eteo.tistory.com/151)
getTickCount() 함수는 컴퓨터 부팅 시점부터 현재 까지 발생한 tick 횟수를 반환. 반환형은 int64
getTickFrequency() 함수는 시스템의 클락 주파수(초당 틱 횟수)를 반환. 반환형은 double
void time_inverse() {
Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Image load failed!" << endl;
return;
}
Mat dst(src.rows, src.cols, src.type());
int64 t1 = getTickCount();
for (int j = 0; j < src.rows; j++) {
for (int i = 0; i < src.cols; i++) {
//dst.at<uchar>(j, i) = 255 - src.at<uchar>(j, i);
dst.at<uchar>(j, i) = ~src.at<uchar>(j, i);
}
}
int64 t2 = getTickCount();
double ms = (t2 - t1) * 1000 / getTickFrequency(); // 주파수는 10MHz 반환, 밀리초로 환산
cout << "Image inverse took " << ms << "ms." << endl;
}
'OpenCV' 카테고리의 다른 글
OpenCV ] 영상의 밝기 조절 + 명암비 조절 + 히스토그램 분석 (0) | 2022.08.23 |
---|---|
OpenCV ] 유용한 함수들. sum(), mean(), minMaxLoc(), normalize(), cvRound() (0) | 2022.08.18 |
OpenCV ] setTo(), copyTo() 함수와 마스크 연산 (0) | 2022.08.18 |
OpenCV ] 데이터 파일 입출력 (0) | 2022.08.18 |
OpenCV ] 트랙바 (슬라이더 컨트롤) 사용하기 (0) | 2022.08.18 |