본문 바로가기
오류 해결

[OpenCV] cv2.error: OpenCV(x.x.x) :-1: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

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

에러 메시지 설명

  이 오류는 cv2.cvtColor() 함수 호출 시 발생하는 것으로, 이 함수는 이미지의 색상 변환을 처리합니다. "Assertion failed"는 cvtColor 함수에서 입력 이미지가 비어 있을 때 발생하는 오류입니다. 즉, 함수에 전달된 이미지가 None 또는 빈 이미지라는 의미입니다.

 

발생 원인

  이 오류는 다음과 같은 원인으로 발생할 수 있습니다.

  • 이미지가 로드되지 않음: cv2.imread()를 사용하여 이미지를 로드할 때, 잘못된 경로나 파일이 존재하지 않아 이미지가 로드되지 않으면 None 값이 반환됩니다.
  • 비디오 프레임이 없음: cv2.VideoCapture()로 비디오를 읽을 때, 프레임을 제대로 가져오지 못하면 비어 있는 이미지가 반환됩니다.
  • 파일 경로 오류: 잘못된 파일 경로나 파일명이 입력될 경우, OpenCV가 이미지를 찾지 못해 빈 객체를 반환할 수 있습니다.

 

해결 방법

이미지 파일 경로 확인

  먼저, 이미지 파일 경로가 올바른지 확인해야 합니다. cv2.imread()로 이미지를 로드한 후, 이미지가 제대로 로드되었는지 확인하는 방법은 다음과 같습니다.

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

  위 코드를 사용해 이미지가 정상적으로 로드되었는지 확인한 후, cvtColor 함수를 호출합니다.

 

비디오 캡처 확인

  비디오에서 프레임을 가져오는 경우, cv2.VideoCapture()가 올바르게 작동하고 있는지 확인합니다. 비디오 프레임을 읽어올 때는 다음과 같이 확인할 수 있습니다.

cap = cv2.VideoCapture(0)  # 또는 비디오 파일 경로
ret, frame = cap.read()
if not ret:
    print("프레임을 읽지 못했습니다.")


  ret이 False이면 비디오 프레임을 가져오지 못한 것이므로, 카메라 인덱스나 비디오 파일 경로를 다시 확인해야 합니다.

 

이미지 파일 유효성 확인

  이미지 파일이 손상되었거나 지원되지 않는 형식일 경우에도 이 오류가 발생할 수 있습니다. 이미지 파일이 정상적인 형식인지, 파일이 손상되지 않았는지 확인한 후 다시 로드해 보세요.

 

OpenCV 버전 업데이트

  특정 OpenCV 버전에서 이 문제가 발생할 수 있으므로, OpenCV를 최신 버전으로 업데이트하는 것도 해결 방법 중 하나입니다.

pip install --upgrade opencv-python

 

관련 내용 및 추가 팁

  • cv2.imread()로 이미지를 로드할 때, 컬러 모드나 경로 설정이 잘못되면 빈 이미지를 반환할 수 있습니다. 이 경우 cv2.IMREAD_COLOR 등의 플래그를 확인해 보세요.
  • 비디오에서 프레임을 가져올 때, 카메라나 비디오 파일이 제대로 연결되지 않았는지 확인합니다.
  • OpenCV 공식 문서

 

반응형