[TIL] OpenCV SystemError : May 17, 2021

RE_BROTHER·2021년 5월 17일
0

TIL

목록 보기
35/41
post-thumbnail

OpenCV SystemError

built-in function imwrite returned NULL without setting an error.

OpenCV를 이용하여 jpg to png 변환 Process 과정을 거칠 상황이 생겨 코드를 작성하던 중 마주친 에러

def jpg_to_png(path):
    filePath = '{}'.format(path)
    directory_name = basename(path)
    print('target directory :', filePath)
    fileExt = r'*.jpg'
    target_list = list(pathlib.Path(filePath).glob(fileExt))

    for target in range(0, len(target_list)):
        print('[INFO] target_list[{}] :'.format(target), target_list[target])
        target_file = target_list[target]
        img = cv2.imread(target_file)
        cv2.imwrite(r'{0}\{1}_{2}.png'.format(filePath, directory_name, target), img)
        print('[COMPLETE] {0} / {1} :'.format(target, len(target_list)))

argparse를 통해 변환 디렉토리에 대한 path를 인자로 받아 path 변수로 해당 경로를 전달하여 디렉토리 내에 jpg 파일을 png로 변환하는 코드이다.

img = cv2.imread(target_file)

해당 부분에서 OpenCV SystemError가 발생했고, 해당 오류 수정을 위해 인터프리터 환경으로 전환하여 오류 확인을 진행하였다.
일반적으로 파일의 경로는 str 타입으로 받아오는 경우가 많은데, 디렉토리 내에 jpg 파일 리스트를 가져오는 과정에서 사용한 pathlib 패키지에서 WindowsPath 타입으로 경로를 받아오는 현상이 발생했다.

의외로 타입 변환을 통해 간단하게 해결했다.


img = cv2.imread(str(target_file))

결론

쉽게 해결할 수 있는 문제는 차근차근 쉽게 생각해서 쉽게 해결해보자.

profile
I hope the All-Rounder Developer & Researcher

0개의 댓글