본문 바로가기
파이썬

[CV] OpenCV cv2 imread() 할 때 can't open/read file: check file path/integrity 오류 해결

by Tiabet 2024. 12. 4.

요즘 이미지 처리 작업을 하고 있어서 cv2 라이브러리를 많이 사용하는데, 하루는 이런 오류가 발생했다.

 

 

integrity가 맞지 않아서 오류가 발생하는 것.

구글링을 해본 결과 해답을 얻을 수 있었다.

https://stackoverflow.com/questions/72022176/warning-cant-open-read-file-check-file-path-integrity

 

warning can't open/read file: check file path/integrity

images_per_class = 80 fixed_size = tuple((500, 500)) train_path = "dataset/train" train_labels = os.listdir(train_path) for training_name in train_labels: dir = os.path.join(

stackoverflow.com

 

 

OpenCV 라이브러리로 파일을 읽을 때는 파일 이름에 특수문자가 있어서는 안 된다는 것. ( _ 언더바는 된다.)

 

특수문자 뿐만이 아니라 파일 이름에 한글도 있어서는 안 되었다. (디렉토리도 마찬가지)

 

즉 다수의 한국어로 된 파일을 갖고 있는 나는 이걸 해결해주기 위해 또 다른 작업을 해야만 했다...

 

import os

# Define the directory containing PNG files
directory = "path/to/your/directory"  # Replace with your directory path

# Define a renaming pattern
new_name_prefix = "image"  # Replace with your desired prefix

# Iterate over all files in the directory
for index, filename in enumerate(os.listdir(directory)):
    if filename.endswith(".png"):  # Only process .png files
        # Generate new file name
        new_name = f"{new_name_prefix}_{index+1}.png"
        # Get the full path for the old and new names
        old_file_path = os.path.join(directory, filename)
        new_file_path = os.path.join(directory, new_name)
        # Rename the file
        os.rename(old_file_path, new_file_path)

print("File renaming complete!")

 

GPT4o 로 빠르게 생성한 파일 이름 일괄 변경 방법이다. 구글이나 네이버를 치면 뭐 쭉 드래그해서 한 번에 바꾸기, 네이버 프로그램 사용하기 등이 나오는데 드래그해서 일괄 변경하는 방법은 윈도우 시스템상 같은 파일 이름으로 변경하면 소괄호 ()로 구분하는 시스템 때문에 적용이 불가능하다. OpenCV는 소괄호도 특수문자로 취급하여 파일을 읽지 못한다. 프로그램을 깔 바에는 그냥 이렇게 파이썬으로 한 번에 바꾸는 게 훨씬 편한 것 같다.