Coding/Python Matlab

파이썬 - PIL (Python Image Library)

smores 2012. 1. 22. 14:17
회사 업무중에 개발했던 몇가지 평가 기술에서 간단한 이미지 분석이 필요했었다. C++로 프로그램을 짜면서 적절한 무료 라이브러리를 찾다가 결과적으로는 EasyBMP라는 것을 쓰게 되었었다. 이름처럼 BMP만을 처리한다. 덕분에 평가를 위한 이미지들을 모두 (비압축) BMP로 만들어서 하드디스크 용량을 열심히 잡아먹었고... (물론 JPG 같은 경우에 있는 압축에 의한 이미지 열화등이 안되는 장점이 있기는 하지만...)

이러한 한계가 싫을때는 Matlab으로 이미지 읽어와서 처리하는 간단한 스크립트를 만들기도 했었지만 역시 자체적으로 실행되는 프로그램에 함께 들어가질 않아서 꺼리는 편이었다 (물론 batch script과 텍스트 파일을 통한 자료 교환을 통해 적절히 실행프로그램과의 연결을 할 수 있기는 하지만 역시 번거롭다.)

파이썬을 배우면서 찾아본 이미지 처리 라이브러리로 가장 쉽게 찾은 것은 PIL이 있다. (pythonware.com) 조금 써 본 결과 엄청나게 강력하면서도 유용하다. 내가 주로 쓰는 기본적인 기능은 정말 기본적으로 쉽게 다룬다. 게다가 이미지 포맷도 내가 만날 만한 것들은 거의 다 기본으로 지원되니 더이상 바랄것이 없다.

앞서 포스팅한 twill, 파이어폭스나 크롬등에 애드온으로 쉽게 쓸 수 있는 iMacro와 더불어 함께 사용하면 이것저것 재미있는 일들을 많이 할 수 있을 것 같다. 예를 들면 본인은 가끔 인터넷에 연재되는 만화를 한꺼번에 보는 경우들이 있는데 이미지를 받아놓고 꿀뷰 등으로 보길 원할때가 있다 (웹페이지 상하좌우에 나오는 광고들이 보기 싫어서...) 그런데 그동안 있었던 몇가지 기술적인 난관들로는

1) 로그인 필요한 사이트의 경우 자동으로 그림을 다운로드 받는 프로그램을 못만들어 왔다 : 파이썬에twill 라이브러리 사용해서 로그인 해결 !!

2) 로그인을 해도 소스파일을 보면 그림을 직접 연결한 것이 아니라 자바스크립트 등으로 서버에서 불러와서 화면에 뿌리는 바람에 다운로드 받을 그림 링크를 찾을 길이 없는 케이스 (야후 카툰에 연재되다 막 끝난 -- 아~ 아쉬움이... -- '낙장불입' 같은 경우 : 파이어폭스에서 iMacro 스크립트로 웹페이지 통째로 PNG로 저장. 모든 그림(총 222화)에 대한 페이지 링크는 파이썬과 twill 등을 이용해서 미리 추출 후 iMacro의 매크로 스크립트까지 만들어 버림. ㅋㅋㅋ

3) 2번의 경우 웹페이지 통째 이미지를 뜬 경우 적절하게 그림 부분만 잘라서 모아야 하는데 예전 같으면 Matlab 또는 Octave (무료라서 선호) 를 사용해서 적절히 자를 부분을 찾는 알고리즘을 만들어 해결... 헌데 PIL을 알게 된 이상 따로 Matlab 돌릴 필요 없이 파이선 안에서 몽땅 다 함께 해결 가능 !!!

이래 저래 파이썬 만쉐이~~~