nan + nan = 2nan

[오류해결] 파일 숫자 순으로 저장 후 읽을 시 순서 문제 본문

Python

[오류해결] 파일 숫자 순으로 저장 후 읽을 시 순서 문제

2nan 2022. 7. 8. 15:12
728x90

정확히 해당 문제에 대해서 용어를 뭐라고 써야할지 모르겠지만, 

우선적으로 Pillow 라이브러리를 이용해 반복문으로 프레임 별 이미지를 생성했다.

이 때, 파일명은

 

num = 0
file_list = []

for img in image_name:
	file_list.append(f'{img}_{num}')
    num += 1
 test_1.jpg , test_2.jpg

 

이런 식으로 파일명을 생성했었다.

하지만, 이런 식으로 파일을 생성한 후 다시 해당 폴더 경로에서 순차적으로 불러 들여 읽어 

OpenCV의 VideoWriter 기능을 이용해 image를 동영상으로 만드는 과정에서 문제가 생겼다.

처음에는 해당 라이브러리에 문제가 있어 화면에서 튀는 현상이 존재하나? 라는 의문이 들었는데

동영상을 분석하면서 중간 중간 튀는 화면이 비슷한 경향이 있었다.

첫 화면이 중간 중간 개입이 되나? 라고 생각을 하면서 시간이 좀 흐르고...

 

나중에 또 OpenCV의 기능을 이용하면서 같은 문제가 발생하면서 하나 하나 print를 찍어본 결과,

glob으로 폴더 내 파일들을 불러와서 리스트에 append 하는 과정에 문제가 있었다.

 

test_1.jpg, test_10.jpg, test_11.jpg, .... , test_100.jpg,  test_101.jpg,, 

 

요런 형식으로 추가가 되는 걸 보면서 아, 이전에 파이썬 교육을 들을 당시 컴퓨터가 숫자를 인식하는 논리와 사람이 인식하는 논리가 다르다(?)라는 이야기를 들었던 적이 있는데 이게 그 문제구나 라고 생각했다.

아직 정확히 해당 문제를 정의해서 이러한 문제가 발생했다! 라고 설명을 못하겠지만, 

숫자의 자리수를 맞춰주면 바이트가

 

그래서, 이미지를 한 장씩 저장할 때의 코드를 살짝 바꾸어주었다.

 

plt.savefig(draw_path + 'test_{0:05d}.png'.format(i))

 

이렇게 바꾸어주었을 때, 결과 값은

 

test_00001.jpg, test_00002.jpg, test_00003.jpg..... 

 

이런 형식으로 바뀌게 되고, 순서대로 파일을 append 후 동영상을 만들어 오래 전부터 의문을 가졌던 이슈를 해결할 수 있었다.

다음에 정확히 컴퓨터가 이러이러하게 인식을 하기 때문에, 이런 문제가 발생했다고 정의를 해서 정확히 이를 이해해봐야겠다.

 

Comments