파이썬(Python)/opencv

[Python]OpenCV imread함수 사용법, 옵션(Option), 예제

끄적끄적아무거나 2022. 3. 15. 09:00
반응형

 

목차

     

     

     

    OpenCV imread함수 사용법

     

    파이썬의 cv2.imread 함수는 이미지(image)파일을 읽을 때 사용하는 함수 입니다. 이미지 파일은 Numpy arrary 형태로 숫자 값들이 넘어오고 이 숫자가 해당 위치에서의 색을 의미 합니다. 

     

    cv2.imread 는 기본적인 기능은 이미지 파일을 읽는 것이지만 내부에 많은 Option 들이 있어서 사용 방법을 알아야 활용도를 높일 수 있습니다. 

     

    이번 포스트에서는 다양한 예제를 통해 이미지파일을 불러오는 것 이외에 다양한 기능에 대해 알아 보겠습니다. 

     

     

     

     

    cv2.imread(파일명, 옵션 값)

     

    파일명에는 이미지 파일의 경로와 파일명을 입력 합니다. 저는 코드와 동일 폴더에 이미지 파일을 넣을 예정으로 파일 경로를 입력하지 않습니다. 옵션 값으로는 아래와 같습니다. 

     

    • cv2.IMREAD_UNCHANGED or -1 : image 파일 변형 없이 원본 읽기
    • cv2.IMREAD_COLOR or 1 : BGR 색으로 읽기
    • cv2.IMREAD_GRAYSCALE or 0 : 회색으로 이미지 출력하기
    • cv2.IMREAD_REDUCED_GRAYSCALE_2 : 회색 출력, 사이즈 반으로 줄이기
    • cv2.IMREAD_REDUCED_COLOR_2 : BGR 출력, 사이즈 반으로 줄이기
    • cv2.IMREAD_REDUCED_GRAYSCALE_4 : 회색 출력, 사이즈 1/4로 줄이기
    • cv2.IMREAD_REDUCED_COLOR_4 : BGR 출력, 사이즈 1/4로 줄이기
    • cv2.IMREAD_ANYDEPTH : 8/16/32비트 변경
    • cv2.IMREAD_ANYCOLOR : 어떤 색으로든 출력 가능
    • cv2.IMREAD_LOAD_GDAL : gdal 드라이브로 이미지 읽기
    • cv2.IMREAD_IGNORE_ORIENTATION : EXIF flag에 따라 이미지 회전 하지 않음

     

     

    cv.imread 로 불러올수 있는 파일 종류(File format)는 아래와 같습니다.

     

    *.png

    *.pbm, *.pgm, *.ppm *.pxm, *.pnm

    *.bmp

    *.jpeg, *.jpg, *.jpe *.jp2

    *.webp

    *.pfm

    *.sr, *.ras

    *.exr

    *.hdr, *.pic

    *.tiff, *.tif

     

     

    다음에 나올 예제에 사용할 이미지 파일은 무료이미지 사이트에서 다운 받은 아래 자동차 사진입니다.

     

     

    팁으로 이미지 파일을 불러올때 파일명을 잘못 입력하면 아래와 같은 NoneType 에레메세지가 발생하니 파일명 입력에 주의하셔야 합니다.

    Traceback (most recent call last):
      File "d:\Python\test02\test02.py", line 6, in <module>
        print("Original image info : ",img0.shape)
    AttributeError: 'NoneType' object has no attribute 'shape'

     

     

     

     

    OpenCV imread함수 이미지 크기(Size) 확인

     

    size는 불러온 이미지 파일에 shape 함수를 사용하면 쉽게 불러 올 수 있습니다. size로 출력된 값은 높이(Height), 너비(width), 채널 수 입니다.

     

    예제 코드>>

    import cv2
    
    img=cv2.imread("car.jpg")
    
    print("Size info : ",img.shape)
    print('Height : ',img.shape[0])
    print('Info type : ',type(img.shape[0]))

    3번 라인: 동일 폴더에 car.jpg 파일을 불러 옵니다.

    7번 라인: 사이즈 정보의 데이터 종류를 확인합니다.

     

     

    결과>>

    Size info :  (1280, 1920, 3)
    Height :  1280
    Info type :  <class 'int'>

     

     

     

     

     

     

     

    OpenCV imread함수 이미지 회색톤으로 읽기

     

    아래 예제는 동일 이미지 파일을 회색으로 변형해서 읽고 채널 값이 변하는 것을 확인하겠습니다.

     

    예제 코드>>

    import cv2
    
    img0=cv2.imread("car.jpg")
    img1=cv2.imread("car.jpg", cv2.IMREAD_GRAYSCALE)
    
    print("Original image info : ",img0.shape)
    print("Reduced image info : ",img1.shape)

    4번 라인: Option 값에 IMREAD_GRAYSCALE을 넣습니다.

     

     

    결과>>

    Original image info :  (1280, 1920, 3)
    Reduced image info :  (1280, 1920)

    단색처리되어 결과 값에 채널이 없어졌습니다.

     

     

     

     

     

     

    OpenCV imread함수 이미지 1/4 축소

     

    앞서 IMREAD_REDUCED_COLOR_4 옵션 값을 사용해서 이미지를 1/4로 줄여서 불러오는 옵션을 사용해보겠습니다.

     

    예제 코드>>

    import cv2
    
    img0=cv2.imread("car.jpg")
    img1=cv2.imread("car.jpg", cv2.IMREAD_REDUCED_COLOR_4)
    
    print("Original image info : ",img0.shape)
    print("Reduced image info : ",img1.shape)

     

     

    결과>>

    Original image info :  (1280, 1920, 3)
    Reduced image info :  (320, 480, 3)

     

     

    반응형