2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Anaconda による OpenCV 導入手順(Mac PC)

Last updated at Posted at 2021-03-23

1. はじめに

Mac PC に Anaconda をインストールし、
環境を作成して OpenCV を導入する手順をまとめます。

また、OpenCV ライブラリを読み込み 画像を表示させる簡単な処理を実行します。

2. pyenv 導入

今回は pyenvを使用して Anaconda を 導入します。

まずは、以下リンク先の記事 の [2. Python3 導入] > [2-1. pyenv 導入] を参考に pyenv を導入します。

・Qiita:Mac PC へのPython3 導入手順 > [2. Python3 導入] > [2-1. pyenv 導入]
https://qiita.com/Haruka-Ogawa/items/b1bf5ad9b28d44702a64#2-1-pyenv-%E5%B0%8E%E5%85%A5

3. Anaconda 導入

3-1. インストール

第2項で導入した pyenv コマンドを使用して、Anaconda を導入します。

① インストール可能 バージョン 表示

pyenvコマンドで インストール可能な Anaconda のバージョンを確認します。

コマンドは以下の通りです。

pyenv install --list

今回は、anaconda3-2020.11 を導入します。

② インストール

pyenv コマンドで anaconda3-2020.11  をインストールします。

コマンドは以下の通りです。

pyenv install anaconda3-2020.11

③ 確認

anaconda3-2020.11 のインストールが完了したら、
使用可能なバージョンを表示して、無事導入されていることを確認します。

コマンドは以下の通りです。

pyenv versions

実行例は以下の通りです。

$ pyenv versions
* system (set by /Users/ogawa/.pyenv/version)
anaconda3-2020.11

anaconda3-2020.11 が無事インストールされていることがわかりました。

④ PATH設定

ターミナル起動時に Anaconda環境がアクティブになるように
ログインシェルに PATHの設定を追加します。

  • ログインシェル確認

Mac PCのデフォルトの ログインシェルを確認します。

コマンドは以下の通りです。

echo $SHELL

実行例は以下の通りです。

$ echo $SHELL
/bin/bash

ログインシェルが bash であることがわかりました。

  • conda init 実行

conda init コマンドを実行します。
シェルには 先ほど確認したMac PCのログインシェル(bash)を指定します。

コマンドは以下の通りです。

conda init bash

ログインシェル(.bash_profile)を確認すると、
AnacondaのPATH 設定が追加されていることが確認できます。

  • ログインシェル再実行

ターミナルを開き直すか、ログインシェル(.bash_profile)を実行して、
AnacondaのPATH 設定をします。

コマンドは以下の通りです。

source ~/.bash_profile

3-2. 使用バージョン設定

Anaconda をインストールした後も、使用されているバージョンは Python2.7のままです。

$ pyenv version
system (set by /Users/ogawa/.pyenv/version)

$ python -V
Python 2.7.16

Python 使用バージョンの変更方法には、

グローバル(環境全体)で バージョンを変更する方法と、

ローカル(特定のディレクトリ)で バージョン変更する方法 があります。

バージョンの設定 変更方法については、以下リンク先の記事もご参照ください。

・Qiita:Mac PC へのPython3 導入手順 > [3. Python3 使用設定]
https://qiita.com/Haruka-Ogawa/items/b1bf5ad9b28d44702a64#3-python3-%E4%BD%BF%E7%94%A8%E8%A8%AD%E5%AE%9A

今回は 作業用ディレクトリ(~/sample) を作成し、
ローカルで使用バージョンを anaconda3-2020.11に変更します。

① ディレクトリ作成・移動

作業用ディレクトリ(~/sample) を準備し、移動します。

実行例は以下の通りです。

$ mkdir ~/sample
$ cd ~/sample

② バージョン変更

pyenvコマンドで 作業用ディレクトリ(~/sample) での使用バージョンを anaconda3-2020.11に変更します。

コマンドは以下の通りです。

pyenv local anaconda3-2020.11

③ 変更後 バージョン確認

バージョンが anaconda3-2020.11に変更されており、
Python も バージョン3.x が使用されるように なっていることを確認します。

実行例は以下の通りです。

$ pyenv version
anaconda3-2020.11 (set by /Users/ogawa/sample/.python-version)

$ python -V
Python 3.8.5

3-3. 環境作成

Anaconda を導入すると、condaコマンドが使用できるようになり、
環境の作成や切り替えを 行うことができるようになります。

ここでは conda環境で環境を作成し、作成した環境に切り替えを行います。

① 環境作成

conda createコマンドで 環境を作成します。

-n (--name)オプションで 環境名(sample37)、
pythonのバージョンを3.7
パッケージに anaconda を指定します。

コマンドは以下の通りです。

conda create -n sample37 python=3.7 anaconda

・Conda Docs:Command reference > conda create
https://docs.conda.io/projects/conda/en/latest/commands/create.html

② 確認

conda infoコマンドで、環境(sample37)が作成されたことを確認します。

コマンドは以下の通りです。

conda info --envs

・Conda Docs:Command reference > conda info
https://docs.conda.io/projects/conda/en/latest/commands/info.html#

実行例は以下の通りです。

$ conda info --envs
# conda environments:
#
base                  *  /Users/ogawa/.pyenv/versions/anaconda3-2020.11
sample37                 /Users/ogawa/.pyenv/versions/anaconda3-2020.11/envs/sample37

環境(sample37)が作成されたことがわかりました。

③ 環境切り替え

conda activate コマンドで 作成した環境(sample37) を有効化し、
環境を切り替えます。

コマンドは以下の通りです。

conda activate sample37

・Conda Docs:Command reference
https://docs.conda.io/projects/conda/en/latest/commands.html#conda-general-commands

4. OpenCV 導入

第3項 で作成した環境で OpenCVを使用できるように opencvパッケージを導入します。

  • インストール

conda installコマンドで opencv パッケージを追加します。

コマンドは以下の通りです。

conda install -c menpo opencv

・Conda Docs:Command reference > conda install
https://docs.conda.io/projects/conda/en/latest/commands/install.html

  • 確認

import cv2 を実行して、opencv が読み込めることを確認し、
読み込まれた opencvのバージョンを確認します。

実行例は以下の通りです。

$ python
Python 3.7.9 (default, Aug 31 2020, 07:22:35) 
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.2'

OpenCV のバージョン 3.4.2 が読み込まれていることがわかりました。

補足

conda create コマンドで Python = 3.8 を指定して環境を作成した場合、
conda install -c menpo opencvでは OpenCVをインストールすることができません。

$ conda install -c menpo opencv
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: - 
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed                                                                          

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - opencv -> python[version='2.7.*|>=3.6,<3.7.0a0|>=3.5,<3.6.0a0|>=3.7,<3.8.0a0|>=2.7,<2.8.0a0']

Your python: python=3.8

If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.

Python 3.8で環境を作成した場合は、
pip install コマンドで opencv-python をインストールするか、
menpoチャンネルではなく conda-forgeチャンネルから opencv のパッケージをインストールします。

コマンドは それぞれ以下の通りです。

  • pip install を使う場合
pip install opencv-python
  • conda-forge チャンネルを使う場合
conda install -c conda-forge opencv

5. 動作確認

動作確認として、OpenCV を使って 簡単な処理を実行します。

ここではJupyter Notebookを開いて、ノートブックを作成し、
そこでOpenCVを読み込んで 指定した画像を表示する処理を記述します。

5-1. Jupyter Notebook 起動

① 起動

前項で作成した環境を 有効化・切り替えた上で、
jupyter notebook コマンドを実行し Jupyter Notebook を起動します。

jupyter notebook

以下のような画面が 開きます。

スクリーンショット 2021-03-23 22.04.07.png

② ノートブック作成

Jupyter Notebookではノートブック上で処理を記述し、
[Run]ボタンをクリックすると 処理を実行することができます。

まず、画面右上の [新規] > [Python3] をクリックし、ノートブックを開きます。

スクリーンショット 2021-03-23 22.04.54.png

以下のような画面が開き、
処理は真ん中の枠に記述していきます。

スクリーンショット 2021-03-23 22.16.29.png

5-2. 画像表示

Jupyter Notebook で開いたノートブックに、画像表示させる 処理を記述し、実行します。

① 画像準備

表示させる画像を用意します。

今回は以下のような 画像(fireworks.JPG) を表示させます。

fireworks.JPG

画像は **~/sample/image/**ディレクトリに配置しておきます。

スクリーンショット 2021-03-23 22.24.54.png

② opencv 読み込み

以下を実行して、OpenCVを読み込みます。

import cv2

スクリーンショット 2021-03-23 22.21.56.png

③ 画像読み込み

以下を実行して、準備した画像(image/fireworks.JPG)を読み込みます。

image = cv2.imread("image/fireworks.JPG")

スクリーンショット 2021-03-23 23.08.40.png

④ 画像表示

以下を実行して、画像(image)をウィンドウに表示させます。

cv2.imshow('sample', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

スクリーンショット 2021-03-23 23.08.51.png

実行すると、以下のような画面が開き、画像が表示されます。

スクリーンショット 2021-03-23 22.33.59.png

キーイベントが発生すると、画像は閉じられます。

使用した関数について説明します。

  • imshow関数

imshow関数で ウィンドウ名(sample)と 画像(image)を指定し、画像を表示します。

imshow('<ウィンドウ名>', <画像>)
  • waitKey関数

waitKey関数で キーイベントが発生するまで 次の処理(ウィンドウを閉じる)を待機するようにします。

この関数では ミリ秒単位でキーイベントの待機時間を設定します。
0を指定すると、無限にキーイベントを待機します。

waitKey(<キーイベント待機時間>)
  • destroyAllWindows関数

destroyAllWindows関数で、すべての表示ウィンドウを閉じます。

destroyAllWindows()

・OpenCV 3.4.2
https://docs.opencv.org/3.4.2/d7/dfc/group__highgui.html

6. おわりに

今回は Anaconda で 環境を作成し、OpenCVを導入しました。

Anaconda の扱いは 慣れるまでが大変ですが、
手軽に環境を作成し、必要なモジュールを入れて 環境を切り替えながら使用できるので、
複数環境を使い分けたい時に便利だと思いました。

参考情報

・Conda Docs
https://docs.conda.io/projects/conda/en/latest/index.html

・conda-forge:Docs
https://conda-forge.org/docs/index.html#

・OpenCV 3.4.2
https://docs.opencv.org/3.4.2/d7/dfc/group__highgui.html

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?