opencv

opencv Desaturation Filter

hoon1016 2021. 4. 30. 11:47

Desaturation Filter란 포토샵 또는 인스타그램과 같은 사진 편집 앱은 다양한 종류의 이미지 향상 기술을 사용하여 

이미지를 특별하게 만듭니다. 이러한 이미지 향상 기술 중 하나는 채도 감소입니다. 채도 채널의 값을 줄여 이미지 채도를

낮춰줍니다. 이로 인해 색이 바래지 않거나 색이 바랜거처럼 보입니다.

 

아래 이미지는 제가 수업들으면서 배운 코드이므로 예시로 넣어 봤습니다!.

 

import cv2

import numpy as np

 

img = cv2.imread('data/images/sample.jpg',1)

 

cv2.imshow("img",img)



saturationScale = 0.01

 

hsvImage = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

 

hsvImage = np.float32(hsvImage)

 

# 채널로 분리하는 함수.

H,S,V = cv2.split(hsvImage)

 

# 유용한함수. np.clip 함수를 이용 0보다 작으면 0으로 맞추고

# 255보다 크면 255로 맞추라고 할 수 있다.

 

S = np.clip(S * saturationScale , 0, 255)

 

#나눈 채널을 하나로 합치는 함수

hsvImage = cv2.merge([H,S,V])

 

# 위에서 float으로 작업을 했으므로, 다시 uint8로 변경해줘야 한다.

hsvImage = np.uint8(hsvImage)

 

# BGR로 다시 변경해야, 우리가 눈으로 확인 가능.

imgBgr = cv2.cvtColor(hsvImage,cv2.COLOR_HSV2BGR)

 

cv2.imshow("cvt bgr",imgBgr)



cv2.waitKey()

cv2.destroyAllWindows()