영상처리

OpenCV resize C++

park__ 2024. 12. 13. 17:11

1. resize 함수

void cv::resize(
    InputArray src,            // 입력 이미지
    OutputArray dst,           // 출력 이미지
    Size dsize,                // 출력 이미지 크기 (가로, 세로)
    double fx = 0,             // x축 스케일 비율 (선택 사항)
    double fy = 0,             // y축 스케일 비율 (선택 사항)
    int interpolation = INTER_LINEAR // 보간법 (기본값: 선형 보간)
);

 

  • src: 입력 이미지.
  • dst: 크기 조정 후 출력 이미지.
  • dsize: 결과 이미지의 크기. Size(width, height) 형식.
  • fx, fy: 각각 가로(x), 세로(y)의 스케일 비율. dsize가 지정되면 무시됩니다.
  • interpolation: 보간법. 이미지 품질을 결정합니다.
    • cv::INTER_NEAREST: 최근접 이웃 보간 (빠르지만 품질 낮음).
    • cv::INTER_LINEAR: 선형 보간 (기본값, 일반적인 경우 사용).
    • cv::INTER_CUBIC: 4x4 픽셀 영역을 사용하는 3차 보간 (품질 높음).
    • cv::INTER_LANCZOS4: 8x8 픽셀 영역을 사용하는 Lanczos 보간 (최고 품질).

2. 예시 코드

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
    // 이미지 로드
    Mat image = imread(file_path);
    if (image.empty()) {
        cout << "이미지를 불러올 수 없습니다." << endl;
        return -1;
    }

    // 크기 조정
    Mat resizedImage;
    Size newSize(300, 200);  // 새로운 크기: 가로 300, 세로 200
    resize(image, resizedImage, newSize, 0, 0, INTER_LINEAR);

    // 결과 표시
    imshow("Original Image", image);
    imshow("Resized Image", resizedImage);

    waitKey(0);
    return 0;
}