MacにPython3系の環境を構築する方法はいくつかあります。

  1. macOS用パッケージマネージャーのHomebrewを利用して、Python3とOpenCV3までHomebrewのみで構築する方法
  2. Homebrewでpyenv/virtualenvをインストール(pip install)してから、pyenvとvirtualenvを使い、Macのシステムから分離して構築する方法
  3. Anaconda3をMacにインストールして独自のPython環境を構築する方法(Macのシステムと共存)

僕は3にしています。

この記事では3の環境でOpenCVとPyOpenGLを使えるようにするまでをまとめます。いまいち「???」なところもあるけど、やっと動かせるようになったのでひとまずよしとしました。

一応は以前の状況から進めたので!

Anaconda?pyenv?どれがいいの?

本題に入る前にとても興味深い記事がありました。

参考:Anaconda は Environment Isolation Tool (環境分離ツール) ではない – Qiita

 

どの選択がベストか、それは人によって違うでしょうね。

Python2系と3系で同時に開発している人はpyenvを使うかもしれませんし、必要なライブラリだけでいいと考えている人もいるでしょう。また、pyenvとAnacondaを組み合わせることが合っているならそちらを使う、というふうに。

 

最初僕は色々と揃っているAnacondaにしました。しかし、OpenCVやOpenGL関連の設定がPythonのバージョンが違うだとか依存関係だとかよくわからなくなったので(前回の記事)、次にpyenv/virtualenvを使ってみました。

最終的に落ち着いたのが前述3の「AnacondaをMacにインストールする」でした。理由は▼こちら。

  • Anacondaはやっぱ便利だし
  • 仮想環境はAnacondaでも作れるし
  • Homebrewと競合するから環境を分けるのが望ましいらしいけど、pyenv配下にAnacondaを入れてもそうでなくてもbrew doctorでワーニングが出るじゃんよ
  • AnacondaでOpenCVとOpenGLが使えた!

 

というわけで以下からが本題。なお、この記事の情報はすべて2017年4月時点のものです。

R4001012

環境

(1)Anaconda3でOpenCVを使う方法

OpenCVはPython3.6系ではなく3.5系で動く

以下を見るにOpenCV3はPython3.6系には対応していないようです。特別にmakeするなど対策はあるようですが、あくまで暫定的とのこと。

参考:python – Can’t install OpenCV3 on Anaconda3 python3.6 on macOS – Stack Overflow

したがって、AnacondaでPython3.5の仮想環境を作ればOKです。

仮想環境作成
conda create -n py35opencv python=3.5 anaconda

仮想環境に入る
source activate py35opencv

OpenCVのインストール
conda install –channel https://conda.anaconda.org/menpo opencv3

インストールの確認
conda list | grep opencv3

これで最新版のOpenCV3がインストールされます。Pythonは3.5.2の環境が作られました。

※追記

conda installについてはブログ本文をコピーするとエラーとなります。channelの前はハイフンが2つです。

OpenCVの動作確認

以下のソースをGitHubにおきました。(→ nnamm/DisplayPhotoInfo

実行
python DisplayPhotoInfo.py

まず画像を表示して、

4

RGBの平均値は[213 127 99]
この写真は「赤系」の色が多い

とRGBの情報を表示するプログラムです。

【補足】なぜか公式のコマンドではインストールできないOpenCV

なぜかうまくいかないこのコマンド。

conda install -c anaconda opencv=3.1.0

condaのリポジトリ?にないって言われる。あるとしたらOpenCV2系(conda search opencv)。opencv=3.1.0と入力しているのに謎。

仕方がないので、ネットで見つけたこちらを実行することにしたわけです。

conda install –channel https://conda.anaconda.org/menpo opencv3

ただし、Python3.6系の環境で行うと以下のようなエラーが出ます。

UnsatisfiableError: The following specifications were found to be in conflict:
– opencv3 -> python 2.7* -> openssl 1.0.1*
– python 3.6
Use “conda info ” to see the dependencies for each package.

ここが前回つまずいて先に進めなかったところでした。

(2)Anaconda3でPyOpenGLを使う方法

PyOpenGLはPython3.6系で動く

conda install -c anaconda pyopengl=3.1.1a1

これでオッケー。仮想環境のPython3.5系でもインストールできます。

PyOpenGLの動作確認

本家からソースコードがダウンロードできますが、Python2系のソースコードになっているため、動かし方にはコツがあります。

参考:PyOpenGL-Demo 3.0.1b1 : Python Package Index

Python3系で実行できるよう、以下を参考にコンバートツールを使います。

参考:PyOpenGLしてみる – Qiita

ディレクトリ移動
cd PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe

全ソースコードを2系から3系へコンバート
〜〜〜/anaconda3/bin/2to3-3.6 -w .

ソースコードの「version」「date」「author」の行をコメントアウト

実行
python lesson11.py

3

いまいち「???」なところ

pylintエラー

Visual Studio Code上なぜかpylintエラーが出ちゃうんですよね。

▼OpenCVのサンプル。CV2をインポートして使っているのに赤い。だけど動く。気持ちわるい。

1

▼PyOpenGLのインポート。使っているのに真っ赤っか。だけど動く。気持ちわるい。

2

OpenCVとPyOpenGLのコード補完が効かない

VSCの内部的に両方とも無いものしているのか、コード補完が効きません。初学生には辛いけど、慣れればなんとかなるでしょう。

おわりに

それにしてもQiitaには助けられています。とはいえ、自分がやりたいことにドンピシャの情報はありません。どの情報も断片的になりがち。だから、自分がやりたいことをまとめてみました。さて、僕と同じ疑問を抱えた方はいるかな(笑)

ひとまずこれで画像解析して遊べそうです。以下のサイトを読み進めていきます。

参考:画像処理入門講座 : OpenCVとPythonで始める画像処理 | プログラミング | POSTD
参考:画像解析 opencv python入門 – Qiita
参考:Python | プログラミング学習ノート

ゆくゆくは自分の写真を使ってデータ分析する予定です。

R4001013

補足「Anacondaで仮想環境を作る方法」

仮想環境の作成

conda create -n py35opencv python=3.5 anaconda

仮想環境の削除

conda remove -n py35opencv –all

仮想環境に入る(Active)

source activate py35opencv

仮想環境から出る(Deactive)

source deactivate py35opencv

仮想環境の確認

conda info -e

参考元:conda で python の環境つくり · GitHub

写真のオシゴトやってます

Photo Session

お話しながらのポートレイト撮影。基本的にマンツーマンのセッション。

Photo Shooting

皆さんが大切な時間を過ごしている瞬間をスナップ撮影。

Photo Lecture

あなたの写真に関する疑問をクリアに。

この記事を書いた人

花村 貴史

空気感フォトグラファーとして写真が生業の元ソフトウェアエンジニア。「自分の好きを大切にしよう」と会社員をやめて大好きな信州に移住。2年半の信州生活を終え、愛しの相方さんのいる兵庫に移住。
その人・その場の「空気感をそっとすくい撮る」写真が好評。撮影した写真で「自然体のあなた」を世に伝えるメッセンジャー。
オシゴトについては「WORK」へ。撮影のご依頼は「依頼フォーム」or「お問い合わせ」からどうぞ。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします