프로그래밍/Python

[Python] error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

채윤아빠 2023. 2. 22. 08:03
728x90
반응형

문제점 및 증상

잘 동작하던 코드를 다른 곳으로 복사하여 실행하였더니, 다음과 같은 오류가 발생하였습니다.

(rknn) hunature@orangepi5:/opt/hunature/vpc_gabo/demo$ python rknn_demo1.py
--> Load RKNN model
done
[ WARN:0@0.178] global loadsave.cpp:244 findDecoder imread_('./space_shuttle_224.jpg'): can't open/read file: check file path/integrity
Traceback (most recent call last):
  File "/opt/hunature/vpc_gabo/demo/rknn_demo1.py", line 77, in 
    img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
cv2.error: OpenCV(4.7.0) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

해결 방법

이 오류는 OpenCV의 cvtColor 함수에서 이미지 객체(ori_img)가 비어 있거나 NULL인 경우 발생합니다. 이 문제를 해결하는 방법은 ori_img에 사용 가능한 이미지 객체를 전달하는 것입니다.

첫 번째는 다음과 같이 "cv2.imread()" 함수를 사용하기 전에 이미지 파일이 존재하는지 확인하여 처리하는 방법이 있습니다.

from os import path
import cv2

# 이미지 파일이 존재하는지 확인
if (not path.exists("image.jpg")):
    print("Error: Image not found")
    exit(-1)

# 이미지 파일을 읽어옴
ori_img = cv2.imread("image.jpg", cv2.IMREAD_COLOR)

# 이미지 컬러 순서 변환
dst = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)

두 번째는 이미지 파일 "cv2.imread()" 함수를 사용하여 받은 이미지 객체가 정상적인지 확인하여 처리하는 방법입니다.

import cv2

# 이미지 파일을 읽어옴
ori_img = cv2.imread("image.jpg", cv2.IMREAD_COLOR)

# 이미지 객체가 유효한지 확인
if (ori_img is None):
    print("Error: Image not loaded")
    exit(-1)

# 이미지 컬러 순서 변환
dst = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)

첫 번째 파일 존재만 확인해서는 파일 자체의 오류가 있는 경우에는 동일한 문제가 발생할 수 있으므로, 두 방법을 모두 이용하는 것이 상세한 오류를 확인할 수 있을 겁니다. 한 가지만 사용하겠다고 한다면 두 번째 방법을 이용해야만 합니다.


참고자료