読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

OSXにPythonのPLIってモジュールを入れるまでが長かったのでログに残す

Python Mac OS X

スポンサードリンク

面倒だったわ。。。

いろいろ記事を確認したからできた。本当ありがたい。俺も残す。

このコードを動かしたかった。

stackoverflow.com

肌色チェッカー(意味深)したかったのだが、動かない。

  • isFleshColor.py
#!/usr/local/bin/python
import os, glob
import urllib, urllib2
from PIL import Image

def get_skin_ratio(im):
  im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2)))
  skin = sum([count for count, rgb in im.getcolors(im.size[0]*im.size[1]) if rgb[0]>60 and rgb[1]<(rgb[0]*0.85) and rgb[2]<(rgb[0]*0.7) and rgb[1]>(rgb[0]*0.4) and rgb[2]>(rgb[0]*0.2)])
  return float(skin)/float(im.size[0]*im.size[1])

def main():
  image_file = './ipz00627jp-5.jpg' # 任意の画像をチェックするように修正しています
  skin_percent = get_skin_ratio(Image.open(image_file)) * 100
  if skin_percent>30:
    print "PORN {0} has {1:.0f}% skin".format(image_file, skin_percent)
  else:
    print "CLEAN {0} has {1:.0f}% skin".format(image_file, skin_percent)

if __name__ == '__main__':
  main()
$ python isFleshColor.py 
Traceback (most recent call last):
  File "isFleshColor.py", line 4, in <module>
    from PIL import Image
ImportError: No module named PIL

どうやらPILというモジュールが入っていないよう。それではインストールする。

「pip」をインストールする

$ sudo easy_install pip

これでいけたお(^q^)

「PLI」をインストールする

親切なQiitaさんにメモがあったお

$ sudo pip install PIL --allow-external PIL --allow-unverified PIL
$ ln -s /usr/local/include/freetype2 /usr/local/include/freetype

qiita.com

実行してみる

$ python isFleshColor.py 
Traceback (most recent call last):
  File "isFleshColor.py", line 20, in <module>
    main()
  File "isFleshColor.py", line 13, in main
    skin_percent = get_skin_ratio(Image.open(image_file)) * 100
  File "isFleshColor.py", line 7, in get_skin_ratio
    im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2)))
  File "/Library/Python/2.7/site-packages/PIL/Image.py", line 763, in crop
    self.load()
  File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 189, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
  File "/Library/Python/2.7/site-packages/PIL/Image.py", line 385, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

うごかないお^q^

モジュールが足りてない?の記事を見つける

$ brew install libjpeg

そして、PILを再インストール

# uninstall
$ sudo pip uninstall pil

# install
$ sudo pip install PIL --allow-external PIL --allow-unverified PIL

再度実行

$ python isFleshColor.py 
PORN ./ipz00627jp-5.jpg has 67% skin

うまくいきましたとさ。