PythonでOpenCV・PILを使った画像処理をするときの環境設定方法

f:id:karaage:20150913165622j:plain:w640

2017/09/13 参考リンク追加
2017/07/25 微修正

pythonで画像処理

 いつも画像処理のプログラムはProcessingで組んでいたのですが、諸事情によりpythonで画像処理をやってみることにしました。まずは環境設定とテストをしたのでその記録です。最終的にはRaspberry Piで動かしたいのですが、プログラムはMacで組みたいので同じプログラムが動く環境をRaspberry PiとMac両方で構築しています。WindowsでもAnaconda等を使えば同じような環境を構築できると思います。以下のサイトが参考になるかもしれません(私はWindows機もっていないので未確認です)。

機械学習のためのPython入門 | キカガク技術ブログ「一日一遊」 | キカガク技術ブログ「一日一遊」

 画像処理のライブラリには、OpenCVとPILを使用する前提です。

Macでの環境構築

pyenvを使用したインストール

 pyenvを使用してセットアップしています。下記記事を参照して、image-processingという仮想環境を生成して移行するところまで実施下さい。

動作確認

 ターミナルから、以下コマンドでpythonのインタラクティブモードに入ります

$ python

 以下2つのコマンドを実行してエラーが出なければOpenCVとPILは正しくインストールされています

>>> import PIL
>>> import cv2

Raspberry Piでの設定

初期セットアップ

 下記記事を参考にセットアップしてください。

Open CVとPILインストール

 以下のコマンドでインストールできます。2行目のコマンドがPILのインストールで、3,4行目のコマンドがOpenCVのインストール。OpenCVのインストールはそれなりに時間かかります(30分程度)。
 セットアップしたタイミングによっては、既にインストール済みのパッケージもあるかもしれません。

$ sudo apt-get update
$ sudo apt-get install python-imaging
$ sudo apt-get install libopencv-dev
$ sudo apt-get install python-opencv
インストール確認

 Macのときと同じです。

 以下さらにプログラムが続くので興味のある方だけ続きをごらんください。

画像処理プログラムテスト

 適当なサンプルでテストしてみましょう。プログラムの中身と、動作方法・動作結果はMac, Raspberry Pi両方とも基本同じです。

PILを使ったサンプル

サンプルプログラム

 以下のプログラムを「pil.py」で保存。

#!/usr/bin/env python
# coding: utf-8

from PIL import Image
import ImageFilter

img = Image.open("input.jpg")
output = img.filter(ImageFilter.CONTOUR)
output.save("output.jpg")

 プログラムと同じフォルダに、加工したい画像ファイルを「input.jpg」という名前で配置してから、以下のコマンド実行。

$ python pil.py
実行結果

 たまたまとてもよいフリー素材があったので使用しました。変デジ研究所のロンスタさん(id:lonestartx) 、素材提供ありがとうございます。

f:id:karaage:20150430163150j:plain:w640
 使用前


f:id:karaage:20150913165526j:plain:w640
 使用後

OpenCVをつかったサンプル

 以下のプログラムを「cv.py」で保存。

#!/usr/bin/env python
# coding: utf-8

import cv2

img = cv2.imread("input.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("output.jpg", img_gray)

 PIL同様、プログラムと同じフォルダに、加工したい画像ファイルを「input.jpg」という名前で配置してから、以下のコマンド実行。

$ python cv.py
実行結果

f:id:karaage:20150430163150j:plain:w640
 使用前


f:id:karaage:20150913165622j:plain:w640
 使用後

まとめ

 画像処理するだけなら、pythonでもそこまで難しく無くできそうですね。OpenCVはもちろんのこと、PILも手軽に色々できそうですし。pythonの他の豊富なライブラリとも連携できるのはよさそうです。例えば人工知能の分野はpythonでプログラムすることが多いので、将来的に画像処理に人工知能を使いたい人はよいかもしれません(そんな人が何人いるのかわかりませんが)。
 今後ももうちょっと色々弄っていきたいと思います。

追記(2016/05/04)

 GitHubでpythonの画像処理ソフトを公開しています。

関連記事