OpenCV - 이미지 다루기

dumbbelldore·2025년 1월 27일
0

zero-base 33기

목록 보기
88/97
post-thumbnail

1. 이미지 읽기/쓰기

  • 읽기: imread()
  • 쓰기: imwrite()
  • 출력: imshow()
import cv2

# 이미지 읽기
img = cv2.imread("./data/input.jpg")

# 이미지 출력
cv2.imshow("img", img)

# 아무키나 누르면 창 종료 (Mac 사용자 기준)
cv2.waitKey(5000)
cv2.destroyAllWindows()
cv2.waitKey(1)

# 이미지 쓰기
cv2.imwrite("./data/output.png", img)

2. 이미지 다루기

2-1. ROI (Regeion of Intereset) 추출

  • ROI를 지정하여 원하는 부분만 추출
import cv2

img_path = "data/night_sky.jpg"
img = cv2.imread(img_path)

# ROI 영역
x, y, w, h = 100, 100, 200, 400

# OpenCV의 이미지 배열은 (height, width, channel) 순
roi = img[y:y+h, x:x+w]
print(roi.shape) # (400, 200, 3)

cv2.imwrite("data/night_sky_roi.jpg", roi)

2-2. RGB 조정

  • channel의 0(Blue), 1(Green), 2(Red) 조절
img_wo_blue = img
img_wo_blue[:, :, 0] = 0 # Blue만 제거
cv2.imwrite("data/night_sky_wo_blue.jpg", img_wo_blue)

2-3. 색상 반전

  • RGB 값을 255에서 차감
img_inverted = 255 - img
cv2.imwrite("data/night_sky_inverted.jpg", img_inverted)

2-4. 밝기 조절

  • RGB 값을 각각 +50/-50 만큼 조절
  • OpenCV에서는 직접 가감하기 보다 cv.add(), cv.subtract()를 사용하여야 픽셀 값이 0~255 범위를 벗어나는 현상을 방지할 수 있음
import numpy as np

# 밝기를 +50 만큼 가산
img_p50 = cv2.add(img, np.full(img.shape, 50, dtype=np.uint8))
cv2.imwrite("data/night_sky_p50.jpg", img_p50)

2-5. Grayscale 변환

  • cvtColor() 활용 흑백조로 변환
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("data/night_sky_gray.jpg", img_gray)

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글