賢くなりたい~賢くなりたくない~♪

見たもの聞いたもの何でも発信!!

OpenCVをインストールして画像処理に挑戦【Python】

f:id:ooenoohji:20181024055217j:plain

画像処理ライブラリとして有名なOpenCVPython版をインストールして画像処理に挑戦してみようと思います。
最近の画像処理(認識や分類は特に)はディープラーニングに押されていますが、よりプリミティブ(原始的)な画像処理を集めたOpenCVにも触れることで、画像処理への理解は深まりますし、ディープラーニングと組み合わせることでオリジナリティのある手法を構築することができると思います。
つまり、これから画像処理やるぞって方にも、学習用としてOpenCVを使ってみることはオススメです。

OpenCVとは?

OpenCVとはオープンソースの画像処理ライブラリです。CVはComputer Visionの略です。とにかく充実したライブラリで、エッジ検出やノイズ除去などの基本的な処理はもちろん、機械学習を用いた顔検出なども簡単に実装することができます。大学の研究室時代から画像処理を研究に従事し、今まで様々な手法を、論文が擦り切れるほど読み込みながら、ゼロから実装してきた自分がこのライブラリの存在を知った時には膝から崩れ落ちました(笑)。今までの苦労は何だったのか・・・
とにかくとても充実していて使いやすい画像処理ライブラリです。上にも書きましたが、画像処理・認識に関して、近年はDeepLearning一色で、それ用のライブラリで色々できてしまうのですが、例えばDeepLearningへの入力用として画像に前処理したい場合(サイズ変更、ノイズ除去、etc)などは、このOpenCVは便利です。つまりDeepLearning用のライブラリと組み合わせて使うことでかなり多くのことができるようになります。

PythonOpenCVをインストール

f:id:ooenoohji:20181024060501p:plain
インストールは本当に簡単で、コマンドプロンプトで以下のコマンドを打つだけ。

pip install opencv-python

※Python3.6でインストールを実行しました、そして成功しました。それ以降のバージョンについては不明です。
私はAnacondaでOpenCV用の仮想環境を作ってインストールしました。Anacondaでの環境構築だったのでデフォルトでNumpyがインストールされていますが、Anaconda等のパッケージを用いない方はNumpyも別途インストールしましょう。



【スポンサーサイト】

動作確認

インストールが完了したら動作確認してみましょう。インタラクティブモードなどを使って、以下のように「cv2」をインポートしてみてください。

import cv2

これでエラーメッセージが出なければ正常にインストールできている証拠です。

実際にプログラミングしてみよう

以下の記事で画像中の顔検出をOpenCVで行うプログラムを掲載しています。
まずはコピペで良いので、実際に動かしてみましょう。こんなに簡単に画像処理できるんだと感動するはずです!
kashikoku.instafr.com

OpenCVの書籍

書籍もたくさん出ています。最近はpython+OpenCVの本も出ているようです。

OpenCVとPythonによる機械学習プログラミング

OpenCVとPythonによる機械学習プログラミング

  • 作者:Michael Beyeler
  • 発売日: 2018/08/29
  • メディア: 単行本(ソフトカバー)
また、C++になってしまいますが、OpenCVについて詳細に解説されている本がこちら。さらに、以下の本は初めての方には少々難解なVisual Studioでの設定が書かれています。
実践OpenCV 3 for C++画像映像情報処理

実践OpenCV 3 for C++画像映像情報処理

興味のある方は是非上の書籍も参照してみてください。

まとめ

OpenCVのおかげで画像処理を実装する敷居がだいぶ下がりました、それくらい便利なライブラリです。また、冒頭でも述べましたが、ディープラーニング等の手法と画像処理・機械学習を組み合わせる際に、このOpenCVはとても役に立ちます。例えばオートエンコーダで抽出した特徴量をOpenCVで実装されているSVM(Support Vector Machine)に入力するとか・・・そんなことが簡単に実装できてしまいます。
私自身、これからOpenCVを使っていこうと考えているので、本ブログにてOpenCVを用いた画像処理実装例を載せていけたらと考えています。興味のある方は是非見に来ていただけたらと思います。