ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • imread 함수
    컴공지식/컴퓨터비전 2024. 8. 31. 15:49

    imread는 OpenCV에서 이미지를 파일에서 읽어올 때 사용하는 아주 기본적인 함수다.

    imread 함수는 지정된 파일로부터 이미지를 읽어들여 Mat 객체에 저장하는 역할을 한다.

    Mat 객체는 OpenCV에서 이미지 데이터를 저장하고 처리하는 데 사용되는 기본 데이터 구조다.

     

    imread 함수는 다음과 같은 시그니처를 가지고 있다.

    Mat imread( const string& filename, int flags = 1 );

     

    const string& filename : 이 매개변수는 이미지 파일의 경로와 파일 이름을 나타낸다. 예를 들어 "lena.png" 또는 "C:/images/lena.png"처럼 파일의 경로와 이름을 문자열로 전달한다.

     

    int flags = 1: 이 매개변수는 이미지를 읽어올 때 어떻게 해석할지를 결정한다. 기본값은 1이다.

    플래그 값에 따라 이미지를 다르게 읽어들일 수 있다.

    IMREAD_COLOR (1) : 기본값으로, 이미지를 컬러로 읽어온다. 이미지를 3채널(BGR)로 읽어들이며, 알파 채널(투명도)은 무시된다.

    IMREAD_GRAYSCALE (0) : 이미지를 그레이스케일로 읽어온다. 이미지를 단일 채널로 읽어들이며, 픽셀 값은 0~255 사이의 밝기를 나타낸다.

    IMREAD_UNCHANGED (-1): 이미지 파일의 모든 데이터를 그대로 읽어온다. 알파 채널이 있는 이미지는 4채널로, 없는 이미지는 3채널로 읽힌다.

     

    예시 코드는 다음과 같다.

     

    #include <opencv2/opencv.hpp>

    int main() {
        // 기본값으로 컬러 이미지 읽기
        cv::Mat colorImage = cv::imread("lena.png");
        
        // 그레이스케일 이미지로 읽기
        cv::Mat grayImage = cv::imread("lena.png", cv::IMREAD_GRAYSCALE);
        
        // 알파 채널 포함해서 읽기
        cv::Mat unchangedImage = cv::imread("lena.png", cv::IMREAD_UNCHANGED);
        
        // 이미지가 잘 불러와졌는지 확인
        if (colorImage.empty()) {
            std::cout << "이미지를 불러올 수 없습니다!" << std::endl;
            return -1;
        }

        // 결과 이미지 보여주기
        cv::imshow("Color Image", colorImage);
        cv::imshow("Grayscale Image", grayImage);
        cv::imshow("Unchanged Image", unchangedImage);
        cv::waitKey(0);

        return 0;
    }

     

    이렇게 사용할 수 있다.

    cv::Mat grayImage = cv::imread("lena.png", cv::IMREAD_GRAYSCALE); 이 함수를 아래처럼 쓸 수 있다.

    cv::Mat grayImage = cv::imread("lena.png", 0);

     

    근데 왜 cv::Mat grayImage = cv::imread("lena.png", cv::IMREAD_GRAYSCALE); 이렇게 쓰냐면.. 가독성을 위해서다.

    다른 사람이 코드를 볼 때 0이 무엇을 의미하는지 모를 수도 있기 때문에..

    '컴공지식 > 컴퓨터비전' 카테고리의 다른 글

    Pixel Access  (0) 2024.09.06
    Intensity Transformation  (0) 2024.09.03
    픽셀의 값이 바뀐다는 건 뭘까?  (0) 2024.08.31
    setTo 함수  (0) 2024.08.31
    convertTo 함수  (0) 2024.08.31
Designed by Tistory.