728x90
반응형
화소 처리 (Point processing)
- 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산

src(x,y) : 입력 x,y의 픽셀값
dst(x,y) : 출력 x,y의 픽셀값
- 결과 영상의 픽셀 값이 정해진 범위(ex. 그레이스케일)에 있어야 함.
- 반전, 밝기 조절, 명암비 조절 등
밝기 조절
- 영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산

밝기 조절 수식
saturate : 일정 값 이상 또는 이하로 넘어가지 않도록 제한 하는 함수
영상의 밝기 조절을 위한 영상의 덧셈 연산
cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst
- src1 : (입력) 첫 번째 영상 또는 스칼라
- src2 : (입력) 두 번째 영상 또는 스칼라
- dst : (출력) 덧셈 연산의 결과 영상
- mask : 마스크 영상
- dtype : 출력 영상(dst)의 타입.
- ex. cv2.CV_8U, cv2.CV_32F 등
- 참고사항
- 스칼라(scalar)는 실수 값 하나 또는 실수 값 네 개로 구성된 튜플
- dst를 함수 인자로 전달하려면 dst의 크기가 src1, src2와 같아야 하며, 타입이 적절해야 한다.
그레이스케일 밝기 100 증가
# 그레이스케일 영상 불러오기
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
dst = cv2.add(src, 100)
#dst = np.clip(src + 100., 0, 255).astype(np.uint8)
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
- 실행결과 :

컬러영상 밝기 100 증가
# 컬러 영상 불러오기
src = cv2.imread('lenna.bmp')
dst1 = cv2.add(src, (100, 100, 100, 0)) # 그레이스케일처럼 (src, 100) 이렇게 하면 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)
- 실행결과 :

728x90
반응형
'OpenCV' 카테고리의 다른 글
| OpenCV 영상처리 - 컬러 영상과 색 공간 (0) | 2024.03.18 |
|---|---|
| OpenCV 영상처리 - 산술 및 논리 연산 (0) | 2024.03.18 |
| OpenCV 동영상 전환 이펙트 (0) | 2024.03.16 |
| OpenCV 트랙바(cv2.createTrackbar) (0) | 2024.03.16 |
| OpenCV 연산 시간 측정(cv2.TickMeter) (0) | 2024.03.16 |
