입력 영상의 특정 좌표 픽설 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산.
결과 영상의 픽셀 값이 정해지진 범위에 있어야 한다.
반전, 밝기 조절, 명암비 조절 등
영상을 더 밝게 혹은 어둡게 한다
수식
*saturate
: 포화상태로, 일정 값 이상 또는 이하로 넘어가지 않게 하는 역할
영상의 덧셈 연산
cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst
- scr1: 입력, 첫 번째 영상 또는 스칼라
- src2: 입력, 두 번째 영상 또는 스칼라
- dst: 출력, 덧셈 연산의 결과 영상
- mask: 마스크 영상
- dtype: 출력 영상(dst)의 타입.
ex) cv2.CV_8U, cv2.CV_32F
- 참고사항
- 스칼라는 실수 값 하나 혹은 네 개로 구성되어있는 튜플
- dst를 함수 인자로 전달 시, dst의 크기가 src1, src2와 같고 타입 적절
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
dst1 = cv2.add(src, 100)
dst2 = src + 100 # 255 넘어갈 시, dst는 그 값 - 255
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8) #clip함수 -> 포화 상황 대비
dst = cv2.add(src, 100) # 제일 간단한 방식
src = cv2.imread('lenna.bmp')
dst1 = cv2.add(src, (100, 100, 100, 0)) # blue성분 100만 추가
dst2 = np.clip(src + 100., 0, 255).astype(np.uint8)
# 비교를 위해서 사이즈 조절
src = cv2.resize(src, dsize=(0, 0), fx=0.5, fy=0.5)
dst1 = cv2.resize(dst1, dsize=(0, 0), fx=0.5, fy=0.5)
dst2 = cv2.resize(dst2, dsize=(0, 0), fx=0.5, fy=0.5)
dst1, dst2의 결과들이 모두 같다
dst1 = cv2.add(src,100) 입력