[OpenCV] Image Resize 영상 리사이즈 (feat.LogLevel)
Computer Vision 2026. 4. 23. 12:11 |반응형
영상을 리사이즈하면 어떻게 변화하는지 살펴보자. (불필요한 로그 메세지도 없애보자)
2X2 데이터
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
// OpenCV 로그 레벨을 WARNING 또는 ERROR로 설정하여 불필요한 INFO 메시지를 숨김
cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_WARNING);
//LOG_LEVEL_VERBOSE: 모든 로그 출력(매우 상세)
//LOG_LEVEL_INFO : 일반적인 정보 메시지만 출력
//LOG_LEVEL_WARNING : 경고 메시지만 출력
//LOG_LEVEL_ERROR : 실제 에러 발생 시에만 출력
//LOG_LEVEL_FATAL : 프로그램이 중단될 정도의 치명적 에러만 출력
//LOG_LEVEL_SILENT : 모든 로그 끄기
char data[4] = {
30, 60,
90, 120
};
cv::Mat mat(2, 2, CV_8UC1, data);
std::cout << "Original Mat: " << std::endl << mat << std::endl;
cv::Mat resizedMat;
cv::resize(mat, resizedMat, cv::Size(), 2, 2, cv::INTER_NEAREST);
// INTER_NEAREST는 가장 가까운 픽셀의 값을 사용하여 이미지를 확대하는 방법이다.
// 이 방법은 빠르지만, 확대된 이미지가 계단 현상(픽셀화)으로 보일 수 있다.
std::cout << "Resized Mat (INTER_NEAREST): " << std::endl << resizedMat << std::endl;
cv::resize(mat, resizedMat, cv::Size(), 2, 2, cv::INTER_LINEAR);
// INTER_LINEAR는 주변 픽셀의 값을 선형 보간하여 이미지를 확대하는 방법이다.
// 이 방법은 INTER_NEAREST보다 부드러운 결과를 제공하지만, 계산 비용이 더 높다.
// 가장 일반적으로 사용되는 보간 방법으로, 대부분의 경우에 적절한 결과를 제공한다.
std::cout << "Resized Mat (INTER_LINEAR): " << std::endl << resizedMat << std::endl;
cv::resize(mat, resizedMat, cv::Size(), 2, 2, cv::INTER_CUBIC);
// INTER_CUBIC는 주변 픽셀의 값을 3차 보간하여 이미지를 확대하는 방법이다.
// 이 방법은 INTER_LINEAR보다 더 부드러운 결과를 제공하지만, 계산 비용이 더 높다.
// 특히, 이미지가 크게 확대될 때 더 좋은 결과를 제공할 수 있다.
std::cout << "Resized Mat (INTER_CUBIC): " << std::endl << resizedMat << std::endl;
cv::resize(mat, resizedMat, cv::Size(), 2, 2, cv::INTER_LANCZOS4);
// INTER_LANCZOS4는 주변 픽셀의 값을 Lanczos 보간을 사용하여 이미지를 확대하는 방법이다.
// 이 방법은 가장 부드러운 결과를 제공하지만, 계산 비용이 가장 높다.
// 특히, 이미지가 크게 확대될 때 가장 좋은 결과를 제공할 수 있다.
std::cout << "Resized Mat (INTER_LANCZOS4): " << std::endl << resizedMat << std::endl;
return 0;
}

4X4 데이터
...
char data[16] = {
30, 30, 60, 60,
30, 30, 60, 60,
90, 90, 120, 120,
90, 90, 120, 120
};
cv::Mat mat(4, 4, CV_8UC1, data);
...

8X8 데이터
...
char data[64] = {
30, 30, 30, 30, 60, 60, 60, 60,
30, 30, 30, 30, 60, 60, 60, 60,
30, 30, 30, 30, 60, 60, 60, 60,
30, 30, 30, 30, 60, 60, 60, 60,
90, 90, 90, 90, 120, 120, 120, 120,
90, 90, 90, 90, 120, 120, 120, 120,
90, 90, 90, 90, 120, 120, 120, 120,
90, 90, 90, 90, 120, 120, 120, 120
};
cv::Mat mat(8, 8, CV_8UC1, data);
...

반응형
'Computer Vision' 카테고리의 다른 글
| [OpenCV] CPU, GPU Image Processing Comparison 이미지 처리 속도 비교 (0) | 2026.04.26 |
|---|---|
| [OpenCV] OpenCV with CUDA Build (0) | 2026.04.26 |
| [OpenCV] Nozzle Number, Stream & Suckback Level Detection 노즐 번호, 물줄기 및 Suckback 높이 검출 (0) | 2026.04.18 |
| [OpenCV] Histogram & Median 히스토그램 & 중앙값 (0) | 2026.04.18 |
| [NVR] 하나의 랜 카드에 두 개의 네트워크 IP 지정하기 (0) | 2026.04.11 |
