Wednesday, 14 November 2012

SimpleCV install and "You need the python image library to save by filehandle"


You'll maybe complain that this site is degenerating into a mingle-mangle of bug descriptions, but if you've ever had a pesky problem and couldn't find anything about it on the web, you'll understand my urge to document such things for the fellow hackers.

Here the story goes: SimpleCV is a Python framework trying to provide a simple interface to both OpenCV* an PIL**. There's even a small book about it. I first  installed version 1.2 on my computer, but then wanted to upgrade to 1.3 as there were some segmentation algorithms added (graph-cut etc.) which I wanted to use. Unfortunately, as I installed the new SimpleCV 1.3 and then tried to run my script written for version 1.2 I got:
WARNING: You need the python image library to save by filehandle
when I tried to display any image. Deinstallation of both versions an clean install followed, but nothing changed. Googling for solution didn't help either. What should we do? Just fix it by yourself! The solution is simple. Well, just open this file:

C:\Python27\Lib\site-packages\SimpleCV\base.py
and change the following line***:
  from Image.GifImagePlugin import getheader, getdata
into:
  from GifImagePlugin import getheader, getdata
So, that's it! And happy OpenCV hacking!


PS: PIL seems to be generally a difficult library to use on Windows. If you follow their own docs an write something like
  from PIL import Image
it won't work! You have to use the little bit confusing:
  import Image
--
* OpenCV: a C++ library containing image processing algorithms. For Python there are wrappers exposing direct calls to it, but they aren't that easy to be used directly.

** PIL: the "python image library " from the warning message - the best know imaging library for Python, however it isn't self-contained. You'll need several other libraries like sciPy etc.

*** somehow for Windows distribution the GifImagePlugin isn't a subpackage of Image, and the PIL package just isn't there to be used as prefix! Despite the warning, the problem isn't lack of the PIL installation, but failure to find one of it's subpackages.

21 comments:

Anonymous said...

Thanks

Anonymous said...

Wow, thank you very much! Still can't believe it worked!!

Matheus Portela said...

That was definitely helpful. Thank you a lot!

contractorwolf said...

wow, excellent, this fixed it for me, had same issue on windows 7

Anonymous said...

This works brilliantly. Should be in the installer really.

Anonymous said...

Thank you so much for this!

Mikhail Mehanig said...

Fixed errors with this. Mac OSX 10.8.5
Seems like that's not only Win problem
Thank you!

Mikhail Mehanig said...

Thanks! fixed errors with PIL on Mac OS X 10.8.5
Seems like this isn't only Win problems.

Tim Evers said...

somehow, this didn't work for me. but instead of editing the PIL from the Superpack, simply installing the PIL anew from its own package did the trick, see
http://help.simplecv.org/question/922/warning-about-filehandle-python-image-library/

Fanis said...

Works like acharm!
Thanks

nikhil da rocha said...

Thanks a lot!:)

nikhil da rocha said...

Thanks a lot:)

Anonymous said...

Thanks, man! Your solution works \(^_^)/

Anonymous said...

Thanks, it works. Question: how did you figure this out?

Marek Krj said...

@Anonymous
Read the sources Luke... ;)

Anonymous said...

thanks.

Anonymous said...

all i can say is thanks a lot..!!!!!!!

Asif said...

Bundle of thanks dear Marek... You really escape us from a big trouble...

Anonymous said...

Thank you. It is knights in shining armour like you that restore my faith in humanity.

Anonymous said...

Thank God for Marek!

Tyler said...

Thank You!