이 글에서는 OpenCV에서 제공하는 blur() 함수를 사용하여 이미지를 흐리게(블러) 처리하는 방법을 알아봅니다. blur() 함수는 정규화된 박스 필터(normalized box filter)를 이미지에 적용하여 픽셀 값을 부드럽게 만들어 주는 대표적인 스무딩(smoothing) 기법입니다.
알고리즘 단계
1단계: OpenCV 라이브러리를 임포트합니다.
2단계: 처리할 이미지를 불러옵니다.
3단계: 커널(kernel) 크기를 설정합니다.
4단계: blur() 함수를 호출하고 이미지와 커널 크기를 매개변수로 전달합니다.
5단계: 결과 이미지를 화면에 표시합니다.
원본 이미지
아래는 블러 처리 전의 원본 이미지입니다.

예제 코드
import cv2
image = cv2.imread("testimage.jpg")
kernel_size = (7, 7)
image = cv2.blur(image, kernel_size)
cv2.imshow("blur", image)
cv2.waitKey(0)
실행 결과
블러 처리된 이미지

코드 설명
커널 크기는 이미지의 작은 영역 단위로 블러를 적용하기 위해 사용됩니다. 커널은 이미지 전체를 이동하면서(슬라이딩 윈도우 방식) 자신이 덮고 있는 픽셀들의 평균값을 계산하여 해당 영역을 부드럽게 만듭니다.
위 예제에서는 커널 크기를 (7, 7)로 설정했습니다. 커널 크기가 클수록 더 많은 픽셀이 하나의 평균 값으로 통합되기 때문에 이미지가 더욱 흐려지는 효과를 얻을 수 있습니다. 반대로 커널 크기를 줄이면 블러 효과가 약해집니다.
참고로 마지막에 cv2.waitKey(0)를 추가하면 창이 즉시 닫히지 않고 사용자가 키를 누를 때까지 결과 이미지를 유지할 수 있습니다.