pip で OpenCV のインストール

OpenCV をインストールしてから Python に関連付けるのは手間．

- [HomeBrewでinstallしたOpenCVをpyenvから参照する](https://qiita.com/toohsk/items/64aed6de2b70a111bfb0)
- [pythonでOpenCVを使う一番簡単な方法](https://qiita.com/zabeth129/items/8a1a75cdf713d4fa6bc8)
- [python+OpenCVで顔認識をやってみる](https://qiita.com/wwacky/items/98d8be2844fa1b778323)

また， [venv](https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e) 等を使用して仮想環境を管理している場合，pip だけでパッケージを管理したくなる．そういうときは [opencv-python](https://pypi.org/project/opencv-python/) や [opencv-contrib-python](https://pypi.org/project/opencv-contrib-python/) という非公式ビルド済みパッケージが便利．

## install 方法
main (core) モジュールのみで良い場合:

```
$ pip install opencv-python
```

contrib (extra) モジュールも必要な場合:

```
$ pip install opencv-contrib-python
```

main/extra モジュールの分類については[こちら](https://docs.opencv.org/master/)．OpenCV の使いたい機能に応じて選択する．

商用利用しないのであれば，main モジュールが包含される `opencv-contrib-python` の方にしておけば良いと思います．もしくは core だけではできないことが出てきたら入れ直すか．

## install, import に失敗する場合の対処法
### pip 失敗
pip のバージョンが古いと失敗する場合がある．アップグレードする．

```
$ pip install --upgrade pip
```

>[opencv-python · PyPI](https://pypi.org/project/opencv-python/)
Q: Pip fails with Could not find a version that satisfies the requirement ...?
A: Most likely the issue is related to too old pip and can be fixed by running `pip install --upgrade pip`. 

### Python インタープリタの指定ミス
システムの Python と処理用の Python がある場合，誤ってシステムの Python の方にモジュールをインストールしてしまっている可能性がある．

```
$ python -V
```

で OpenCV をインストールしたい対象の Python インタープリタが実行されることを確認した後，

```
$ python -m pip install opencv-python
```

とする．

例えば Mac で homebrew を使って python をインストールした場合，`python` or `python2` コマンドでは 2 系が，`python3` コマンドでは 3 系が実行される．3 系の方にインストールしたい場合は，

```
$ python3 -m pip install opencv-python
```

とする．

### Windows 特有の失敗
- [Visual C++ redistributable 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145) がインストールされていない
- [Universal C Runtime](https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows) がインストールされていない（Windows 10 より前）
- [古いバージョンの Anaconda のバグ](https://github.com/skvark/opencv-python/issues/36)

>Q: Import fails on Windows: ImportError: DLL load failed: The specified module could not be found.?
A: If the import fails on Windows, make sure you have [Visual C++ redistributable 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145) installed. If you are using older Windows version than Windows 10 and latest system updates are not installed, [Universal C Runtime](https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows) might be also required.
If the above does not help, check if you are using Anaconda. Old Anaconda versions have a bug which causes the error, see [this issue](https://github.com/skvark/opencv-python/issues/36) for a manual fix.

[opencv-python · PyPI](https://pypi.org/project/opencv-python/)

### その他の問題
それぞれのページ後半の Q&A を参照すると解決できるかもしれません．

- [opencv-python · PyPI](https://pypi.org/project/opencv-python/)
- [opencv-contrib-python · PyPI](https://pypi.org/project/opencv-contrib-python/)

## 代替のインストール方法（Windows）
ここ（[Unofficial Windows Binaries for Python Extension Packages](http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv)）から自身の環境に合ったものををダウンロードする．

例: `opencv_python‑3.4.6+contrib‑cp37‑cp37m‑win_amd64.whl`

- **opencv_python-3.4.6**: モジュール自体のバージョン
- **contrib**: contrib モジュールを含む
- **cp37**: Python 自体のバージョン (Python 3.7.X)
- win32/win64/win_amd64
    - **win32**: Intel CPU 32bit Windows
    - **win64**: Intel CPU 64bit Windows
    - **win_amd64**: AMD CPU 64bit Windows

以下のコマンドを実行して OpenCV をインストールする．

```
$ cd ~/Downloads
$ pip install *.whl
```

or

```
$ cd ~/Downloads
$ pip install opencv_python‑3.4.6+contrib‑cp37‑cp37m‑win_amd64.whl
```

※ダウンロードした `.whl` ファイル名を入力する．

## 参考
- [opencv-python · PyPI](https://pypi.org/project/opencv-python/)
- [opencv-contrib-python · PyPI](https://pypi.org/project/opencv-contrib-python/)
- [Macに色々なバージョンのPython+OpenCV+FFmpeg環境を入れてみた](https://qiita.com/neriai/items/b9c6fec8955fe66bfb67)
- [OpenCV 3（core + contrib）をWindows & Python 3の環境にインストール＆OpenCV 2とOpenCV 3の違い＆簡単な動作チェック](https://qiita.com/hitomatagi/items/d5d475a446ec9c73261e)