【VirtualBox】CentOS7にPython3、OpenCV3の環境構築

pythonとopencvのロゴ

私は主にPHPをメイン言語としてきており、Pythonは一度も書いたことがありません。

と言うか勉強したこともないので記述方法すら全く知りません。

ですが今回何万枚もある画像の更新作業(倍以上のサイズの画像へ更新)をしなければならなくなり、かつ確実に同じ画像で更新しなければいけない制約があります。

画像ディレクトリ事更新すればと思うかも知れませんが、画像ファイル名が同じであっても、画像自体が違っている可能性があるため、目視などの確認作業が必要になってきます。

そこで少しでも目視の負担を下げるために、プログラムで画像の類似度を判別し類似度が異なる画像のみを目視で確認できるようなシステムを構築する事になりました。

そこで画像の類似度を判別できるライブラリなどを探した結果OpenCVにたどり着いた流れになります。

OpenCVについて

概要[編集]
画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ[3]。プラットフォームとしてmacOSやFreeBSD等全てのPOSIXに準拠したUnix系OS、Linux、Windows、Android、iOS等をサポートしている。

引用:Wikiペディア

上記にも書かれているようにいくつかの言語で利用できるようですが、CもJavaもかじった程度な上に、環境構築、学習コストが高そうだったためPythonで実装することを選びました。

という事でここから本題のPythonにてOpenCVを利用できる環境構築をVirtualBox上のCentOS7に準備していきたいと思います。

記事内説明

ホストOSはMacになります。

今回はVirtualBox、Vagrantの初期化や操作方法などの説明は省いています。

両方でそんな凝った事は行っていませんので。

また簡単な説明はちょくちょく挟んではいますので不明な点や誤ちなどありましたらご連絡頂ければと思います。

【お問い合わせ】

今回はCentOS7を利用していますが、CentOSの6、他のディストリビューションで環境構築したい方は Vagrantbox.es から好みのものを探してくるといいと思います。

Vagrantbox.es

システム全体構成

細かいものは省いていますが、大体のファイル構成は下記になります。

Vagrant+ItamaeにてVirtualBoxにCentOS7を準備する

では最初にVagrantfileを使って、VirtualBox上にCentOS7を入れます。

synced_folderはホストOSとゲストOS間でフォルダを同期したい場合に設定するものになり、今回はapp以下を設定しています。

ホストOSでVagrantfileでCentOS7をインストール

取り敢えず上記のようになれば成功だと思います。

Itamaeで最低限の処理を実行

後からVirualBoxにログインしPythonやOpenCVをインストールするのですが、なるべく自動化してる部分はその機能を使ってやる方が便利なのでItamaeにて行います。

ざっとですが説明

  • yumの更新
  • timezoneをJapanに変更
  • 文字コードの変更
  • 自分の使いやすい.vimrcの転送
  • ファイヤーウォールの解除
  • vim, gitのインストール

yumの更新があるのでかなり時間が掛かってしまいます。

VirtualBoxにログインしてPython3とOpenCV3をインストール

本当はこれらも全てItamaeで自動化しておいた方がいいのですが、何せ初めてなこともあるので、それはまたの機会に記事にできればと思います。

pyenvを使ってPython3をインストール

私もそれほど詳しくはないのですが、PythonはLinuxのコア機能としても利用されているようなので、大本のPython自体のバージョンを上げたりするのは何かあった際に危険なので、今回はpyenvというツールを利用してPythonの環境を構築します。

pyenvを簡単に説明すると、Python専用の仮想環境構築用ツールになり、コアシステムのPythonと切り離した状態で新たにPython環境を構築できるものになります。

今回はログインしているvagrantユーザーのまま作業を行います。

無事vagrantユーザー環境にてPython3にバージョンアップが完了しました。

因みにrootユーザーに切り替えてPythonのバージョンを確認してみましょう。

vagrantでrootユーザーの初期パスワードは vagrant になります。

ちゃんと元の2.7.5のままですね。

OpenCV3をインストール

OpenCVのインストール方法もたくさんあり、やりたい内容によって依存関係にあるソフトも変わってくるため大変なのですが、今回の目的は始めに書いた通り「画像の類似度を計測する」ことになりますので、OpenCV単体で問題ありません。

ちゃんとOpenCV3系がインストールされているのが確認できました。

Python+OpenCVを使った画像解析のコードはたくさんネット上に公開されているので、それらを参考に目的を果たせるプログラムを作りたいと思います。

スポンサーリンク
レスポンシブ