파이썬(Python)/opencv

[Python]OpenCV 색변환 함수 cvtColor 사용 방법(Gray, HSV, RGB, LAB 비교)

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

 

목차

     

     

     

     

     

    파이썬 OpenCV cvtColor 사용 방법

     

    파이썬 openCV에서 제공하는 함수 중에 cvtColor 함수가 있습니다. 함수 가운데 C는 대문자로 작성하셔야 합니다. 그렇지 않으면 아래와 같은 에러 메세지가 발생 합니다.

     

    에러 메세지>>

    Traceback (most recent call last):
      File "d:\Python\test02\test06.py", line 5, in <module> 
        modified_img = cv2.cvtcolor(img, cv2.COLOR_BGR2GRAY )
    AttributeError: module 'cv2' has no attribute 'cvtcolor'

    파이썬의 openCV의 imread 읽은 이미지(image)파일은 BGR(Blue, Green, Red) 형태로 읽습니다. 이를 공간(space)이라고 하는데 openCV 내에는 150개의 공간이 있습니다. 그 중에 가장 대표되는 공간 색은 아래와 같습니다.

     

    • Gray
    • HSV (Hue, Saturation, Value)
    • RGB (Red, Green, Blue)
    • LAB (Lightness, Green to Maenta, Blue to Yellow)

     

     

    색상 공간 변화는 cvtColor 함수의 옵션(option) 값에서 변경 가능 합니다. 

    cvtColor 함수의 Syntax는 아래와 같습니다.

     

    cv2.cvtColor(소스값, 옵션값, dst, dstCn)

     

    소스값은 imread로 읽은 값을 넣으면 되고 옵션값은 색을 변환하기 위해 사용됩니다. 옵션의 항목은 아래와 같습니다.

     

    • cv2.COLOR_BGR2GRAY
    • cv2.COLOR_BGR2HSV
    • cv2.COLOR_BGR2RGB
    • cv2.COLOR_BGR2LAB

     

    dst는 출력 이미지의 사이즈(Size)와 깊이(Depth)를 원본 이미지에 맞추는 것이라는데 사용법은 잘 모르고 실제 사용한 코드를 본적이 없습니다.

    dstCn은 출력 이미지의 채널 수입니다. 

     

     

    다음 장에서는 실습을 진행하겠습니다. 실습에 사용할 예제 jpg 이미지 파일은 아래와 같습니다.

     

     

     

     

     

     

    파이썬 OpenCV cvtColor 예제 실습: COLOR_BGR2GRAY

     

    예제 코드>>

    import cv2
    from cv2 import imshow
    
    img = cv2.imread("car-cvt.jpg")
    modified_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )
    
    imshow("CVT_Example", modified_img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    5번 라인: COLOR_BGR2GRAY 옵션 값으로 색을 회색으로 반전합니다.

     

    결과>>

     

     

     

     

     

     

    파이썬 OpenCV cvtColor 예제 실습: COLOR_BGR2HSV

     

    예제 코드>>

    import cv2
    from cv2 import imshow
    
    img = cv2.imread("car-cvt.jpg")
    modified_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV )
    
    imshow("CVT_Example", modified_img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    5번 라인: COLOR_BGR2HSV를 사용해서 지배적인 파장의 색상을 강조하는 형태로 변형됩니다.

     

     

    결과>>

     

     

     

     

     

     

     

     

    파이썬 OpenCV cvtColor 예제 실습: COLOR_BGR2RGB

     

    예제 코드>>

    import cv2
    from cv2 import imshow
    
    img = cv2.imread("car-cvt.jpg")
    modified_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB )
    
    imshow("CVT_Example", modified_img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    5번 라인: COLOR_BGR2RGB를 사용해서 BGR(Blue, Green, Red) 구성을 RGB(Red, Green, Blue)로 반전합니다.

     

     

     

    결과>>

     

     

     

     

     

     

     

     

    파이썬 OpenCV cvtColor 예제 실습: COLOR_BGR2LAB

     

    예제 코드>>

    import cv2
    from cv2 import imshow
    
    img = cv2.imread("car-cvt.jpg")
    modified_img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB )
    
    imshow("CVT_Example", modified_img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    5번 라인: COLOR_BGR2LAB를 사용해서 밝기(Lightness)를 강조하고 녹색(Green)을 Magneta로 파랑색(Blue)을 노랑색(Yellow)으로 반전합니다.

     

     

    결과>>

     

     

     

     

    반응형