본문 바로가기
오류 해결

[OpenCV] cv2.error: OpenCV(x.x.x) :-1: error: (-215:Assertion failed) ksize.width > 0 && ksize.height > 0 in function 'GaussianBlur'

by First Adventure 2024. 9. 16.
반응형

에러 메시지 설명

  이 오류는 OpenCV에서 cv2.GaussianBlur() 함수 호출 시 발생하며, 이 함수는 이미지에 가우시안 블러를 적용하는 역할을 합니다. "Assertion failed: ksize.width > 0 && ksize.height > 0"는 가우시안 커널의 크기(ksize)가 유효하지 않다는 의미로, 커널의 너비와 높이가 0보다 커야 하지만 그렇지 않다는 조건이 실패하여 발생하는 오류입니다.

 

발생 원인

  이 오류는 주로 다음과 같은 이유로 발생합니다:

  • 잘못된 커널 크기: cv2.GaussianBlur() 함수에 전달된 커널 크기(ksize)가 0이거나, 유효하지 않은 값일 때 발생합니다. 커널 크기는 반드시 양수의 홀수여야 하며, 0 또는 음수 값이 설정되면 이 오류가 발생합니다.
  • 변수 또는 계산 오류: 커널 크기를 동적으로 계산할 때, 잘못된 계산으로 인해 0이 반환될 수 있습니다.
  • 이미지 로드 실패: 입력 이미지가 잘못 로드되어 None 값일 때, 이 이미지에 대해 블러를 적용하려고 하면 오류가 발생할 수 있습니다.

 

해결 방법

유효한 커널 크기 설정

  커널 크기는 가우시안 블러를 적용할 때 필수적인 매개변수로, 너비와 높이가 모두 양의 홀수여야 합니다. 일반적으로 (3, 3), (5, 5), (7, 7) 등의 값을 사용합니다. 다음과 같이 커널 크기를 설정하여 해결할 수 있습니다.

import cv2

image = cv2.imread('path/to/image.jpg')
if image is None:
    print("이미지를 로드하지 못했습니다. 파일 경로를 확인하세요.")
else:
    blurred_image = cv2.GaussianBlur(image, (5, 5), 0)  # 커널 크기를 (5, 5)로 설정
    cv2.imshow("Blurred Image", blurred_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

 

커널 크기 동적 계산 확인

  커널 크기를 동적으로 계산할 경우, 계산된 값이 0 또는 음수가 될 수 있습니다. 커널 크기를 설정할 때 조건문을 사용해 값이 1 이상의 홀수인지 확인하는 로직을 추가할 수 있습니다.

ksize = some_calculation()  # 커널 크기 계산
if ksize % 2 == 0:
    ksize += 1  # 홀수로 맞춤
ksize = max(1, ksize)  # 최소값을 1로 설정

  이 코드는 커널 크기가 홀수가 되도록 보정하며, 최소값을 1로 설정하여 오류를 방지합니다.

 

이미지 로드 여부 확인

  이미지가 제대로 로드되지 않으면 None 값을 반환하게 되며, 이 경우에도 블러를 적용할 수 없으므로 오류가 발생합니다. 이미지가 제대로 로드되었는지 항상 확인하는 것이 중요합니다.

image = cv2.imread('path/to/image.jpg')
if image is None:
    print("이미지를 로드하지 못했습니다. 파일 경로를 확인하세요.")

 

OpenCV 버전 업데이트

  OpenCV의 구버전에서 이 문제가 발생할 수 있으므로, 최신 버전으로 업데이트하여 문제를 해결할 수 있습니다. 다음 명령어로 OpenCV를 최신 버전으로 업데이트하세요.

pip install --upgrade opencv-python

 

관련 내용 및 추가 팁

  • 커널 크기: 가우시안 커널의 크기는 반드시 양의 홀수여야 하며, 커널 크기가 클수록 이미지의 블러링 효과가 강해집니다.
  • 이미지 확인: 이미지가 로드되지 않으면 커널 크기 설정이 아니라 이미지 자체의 문제일 수 있으므로, 이미지 로드 확인은 필수입니다.
  • OpenCV 공식 문서
  • PyPI opencv-python 페이지
반응형