본문으로 바로가기

파이썬 OpenCV 이미지 밝기 조절 : add, sub

category OpenCV 2020. 7. 14. 13:43

그레이스케일 이미지 밝기 조절

그레이스케일 이미지를 밝게 조절할 때는 add() , 어둡게할 때는 sub() 를 사용하면 쉽게 변환할 수 있습니다.

import numpy as np
import cv2

src = cv2.imread('img.jpg', cv2.IMREAD_GRAYSCALE)

add_dst = cv2.add(src, 100)
sub_dst = cv2.subtract(src, 100)

cv2.imshow('src', src)
cv2.imshow('add_dst', add_dst)
cv2.imshow('sub_dst', sub_dst)

cv2.waitKey() 
cv2.destroyAllWindows()

원본 이미지
밝게
어둡게

 

컬러 이미지 밝기 조절

위의 코드를 그대로 실행해보면 다음과 같은 결과가 나옵니다.

원본 이미지
밝게 했으나
어둡게 했으나

 

확인해보면 픽셀의 BGRB값만 더해진 것을 알 수 있습니다.

import numpy as np
import cv2

src = cv2.imread('img.jpg', cv2.IMREAD_COLOR)

x, y = 50, 50

add = cv2.add(src, 100)
sub = cv2.subtract(src, 100)

print('src :', src[y, x])
print('add :', add[y, x])
print('sub :', sub[y, x])
더보기
src : [142 150 149]
add : [242 150 149]
sub : [ 42 150 149]

 

cv2.add(src1, src2, dst=None, mask=None, dtype=None)

cv2..subtract(src1, src2, dst=None, mask=None, dtype=None)

두 함수는 기능만 다를 뿐, 사용법은 같습니다.

sr1, sr2 인 이미지와 이미지를 연산합니다.

 

배열을 생성해서 다시 실행하니 정상적인 결과가 나왔습니다.

import numpy as np
import cv2

src = cv2.imread('img.jpg', cv2.IMREAD_COLOR)

val = 100
array = np.full(src.shape, (val, val, val), dtype=np.uint8)

add = cv2.add(src, array)
sub = cv2.subtract(src, array)

cv2.imshow('src', src)
cv2.imshow('add', add)
cv2.imshow('sub', sub)

cv2.waitKey() 
cv2.destroyAllWindows()

원본 이미지
밝게
어둡게