Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

OpenCV로 이미지 열기(Opening) 연산 수행하기


이 글에서는 OpenCV를 사용하여 이미지에 열기(Opening) 연산을 수행하는 방법을 알아봅니다. 열기 연산은 이미지 전경(foreground)에 있는 작은 객체나 노이즈를 제거하여 배경과 합쳐 주는 모폴로지 기법입니다. 또한 이미지 속에서 특정 형태를 찾아내는 용도로도 활용할 수 있습니다.

열기 연산은 이름 그대로 침식(Erosion)을 먼저 수행한 뒤 팽창(Dilation)을 이어서 실행하는 과정으로 정의됩니다. OpenCV에서는 cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) 함수 하나만으로 이 과정을 간단하게 처리할 수 있습니다.

원본 이미지

OpenCV로 이미지 열기(Opening) 연산 수행하기

알고리즘

1단계: cv2와 numpy 모듈을 임포트합니다.
2단계: 처리할 이미지를 불러옵니다.
3단계: 연산에 사용할 커널(kernel)을 정의합니다.
4단계: 이미지와 커널을 cv2.morphologyEx() 함수에 전달합니다.
5단계: 연산 결과를 화면에 출력합니다.

예제 코드

import cv2
import numpy as np

image = cv2.imread('testimage.jpg')
kernel = np.ones((5,5), np.uint8)

image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
cv2.imshow('Opening', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

코드 설명

np.ones((5,5), np.uint8)은 5×5 크기의 커널을 생성합니다. 커널 크기가 클수록 더 많은 작은 객체가 제거되므로, 이미지의 특성에 맞게 크기를 조절하는 것이 중요합니다. 마지막에 cv2.waitKey(0)cv2.destroyAllWindows()를 추가하면 창이 즉시 닫히지 않고 결과를 확인할 수 있습니다.

출력 결과

OpenCV로 이미지 열기(Opening) 연산 수행하기