[Python] cv2.imwrite 파일 저장 안되는 현상

OWLS·2024년 5월 3일

삽질

목록 보기
2/3

서론

파이썬은 정말 좋다. 별의 별 라이브러리가 이미 허브에 있고 pip을 통해서 쉽게 다운 받을 수 있으며 아나콘다로 그런 환경들을 관리할 수 있다.

그런 파이썬에 있는 라이브러리인 cv2를 통해 이미지와 영상을 제어할 수 있는데 난 딱 영상 맨 앞 1초 장면을 캡쳐하는 코드를 구현했다. 하지만 파일을 저장해야하는 imwrite가 죽어도 안되길래 삽질 기록을 남긴다.

본론

cv2.imwrite(filename, img, params)

imwrite 대강 정의는 다음과 같다.

return : boolean , 저장 성공시 True, 아니면 False
Name : imwrite
arguments : filename:파일 이름 , img:이미지 정보, params: 기타 옵션

따라서 cv2.imwrite(파일이름, img) 정도만 해도 대강 저장된다.

따라서 imwrite 이후 반환값을 받아 False가 나오면 뭔가 잘못된거다. 그런데 반환만 해줄 분 exception을 해주지 않아서 뭐가 잘못 됐는지 알기 쉽지 않다.

본론 2

OS마다 파일에 넣으면 안되는 문자들이 있다. DB에서는 string에 그냥 넣어서 가독성 올리는 특수 문자들이지만 파일 이름으론 안되는 게 있는데 윈도우에 특히 그런 것들이 있었다.

\ / : * ? " < > | 와 같은 특수 기호를 사용시 OS 차원에서 파일로 아예 만들지를 못한다. 나는 영상을 캡처하고 시간을 뒤에 붙힌 코드를 작성했는데 영 되지 않았다.

file 2024-05-03 12:14:22.jpg 로 작성 했기 때문.

중간에 :가 있어서 안됐으며 다른 것들이 있어도 안될 가능성이 크다.

결론

cv2 함수는 사용하긴 편하지만 뭔가 원하는 결과가 나오지 않아 실패할 경우 그 원인을 명확하게 밝혀주지 않아 코드를 구현하는 사람들이 돌아가게 만드는게 아쉬운 점이긴 하다.

profile
코딩에 관심 많은 사람

0개의 댓글