OpenCV

[OpenCV with Python] 영상처리 : 영상의 밝기 조절

AI 그게 뭔데 2022. 1. 31. 11:24

 처리(Point processing)

  • 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산이다.

 

 조절이란?

  • 영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산이다.

 

밝기 조절 수식

 

 

◽ saturate 연산이란?

음수의 값은 0으로 255보다 큰 값은 255로  만들어주는 연산

 

 

✔ 영상  조절을  영상 덧셈 연산 - cv2.add

cv2.add(src1, src2, dst=None, mask=None, dtype=None)
  • src1 : (입력) 첫 번째 영상 또는 스칼라
  • src2 : (입력) 두 번째 영상 또는 스칼라
  • dst : (출력) 덧셈 연산의 결과 영상 
  • mask : 마스크 영상
  • dtype : 출력 영상(dst)의 타입 
                (e.g.) cv2.CV_8U, cv2.CV_32F 등
  • 참고사항
      -  스칼라(Scalar) 실수  하나 또는 실수   개로 구성된 튜플
      -  dst 함수 인자로 전달하려면 dst 크기가 src1, src2 같아야 하며, 타입이 적절해야 한다.

 

💬 실습 

- 그레이스케 영상 밝기 100 증가시키기

 

import sys
import cv2


# 그레이스케일 영상 불러오기
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)

if src is None:
    print('Image load failed!')
    sys.exit()

dst = cv2.add(src, 100)
dst2 = src + 100
#dst = np.clip(src + 100., 0, 255).astype(np.uint8)

cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.imshow('dst2', dst2)
cv2.waitKey()

 

 

 

 

 

 

import sys
import numpy as np
import cv2

# 컬러 영상 불러오기
src = cv2.imread('lenna.bmp')

if src is None:
    print('Image load failed!')
    sys.exit()


dst1 = cv2.add(src, (100, 100, 100, 0))
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8)

cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()

cv2.destroyAllWindows()