Python 3.10 に OpenCV 4.3 など環境を構築する

ちまたであふれる Anaconda(や Miniconda) を使わずに、そのままの Python 3.8 上で環境を構築します。
[PyPA推奨](https://packaging.python.org/guides/tool-recommendations/) の [pip コマンド(Python付属)](https://pypi.python.org/pypi/pip) のみで環境構築をしたいからです。

## TL;DR
pip コマンドで OpenCV の環境構築は簡単にできる。(pip install opencv-python)

## 環境
* Windows 10 64-bit
* Python 3.10.1 (現時点の最新)
* OpenCV 4.5.4 (現時点の最新)

## インストール手順
### Python 3.10.1
https://www.python.org/downloads/windows/
`Download Windows installer (64-bit)` をクリックしインストーラーをダウンロードします。

Windows の場合、py ランチャーもインストールされます。 
py で Python 3 が起動できます。

```
$ py
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec  6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
```


### OpenCV
非公式ではありますが、PyPIからインストール可能なパッケージ [opencv-python](https://pypi.python.org/pypi/opencv-python) が用意されています。

```
$ pip install opencv-python
Collecting opencv-python
  Downloading opencv_python-4.5.4.60-cp310-cp310-win_amd64.whl (35.1 MB)
     |████████████████████████████████| 35.1 MB 6.8 MB/s
Collecting numpy>=1.21.2
  Downloading numpy-1.21.5-cp310-cp310-win_amd64.whl (14.0 MB)
     |████████████████████████████████| 14.0 MB ...
Installing collected packages: numpy, opencv-python
Successfully installed numpy-1.21.5 opencv-python-4.5.4.60

```

以上です。依存パッケージの numpy も入ります。
また、Python から OpenCV を使う場合は **OpenCV 自体のインストールは 不要** です。
とても簡単ですね。



### OpenCV contrib
拡張モジュール群である contrib を入れる場合は、下記パッケージです。
いくつかの国では商用利用が制限されている可能性があるため導入には注意が必要です（非自由/特許アルゴリズムが含まれているため）

```
$ pip install opencv-contrib-python
Collecting opencv-contrib-python
  Downloading opencv_contrib_python-4.5.4.60-cp310-cp310-win_amd64.whl (42.0 MB)
     |████████████████████████████████| 42.0 MB 6.4 MB/s
Requirement already satisfied: numpy>=1.21.2 in c:\users\tkondou\appdata\local\programs\python\python310\lib\site-packages (from opencv-contrib-python) (1.21.5)
Installing collected packages: opencv-contrib-python
Successfully installed opencv-contrib-python-4.5.4.60
```


## インストール確認
　さて、本題のOpenCVがインストールされ動作するか簡単に確認をします。(ipythonのインストールは後述）
import cv2 にてインポートします。エラーが出なければOK。

```python
$ ipython
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec  6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.30.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import cv2

In [2]: cv2.__version__
Out[2]: '4.5.4'

In [3]:
```

## 感想

pip コマンドのみで、問題なくインストールできました。

Python2 時代は、OpenCV自体をインストールし展開されたcv2.pyd を C:\Python27\lib\site-packeges に突っ込む、という手順だった気がしますが、ずいぶん簡単になりました。

[OpenCVドキュメンテーション](https://docs.opencv.org/4.3.0/)に、opencv-pythonのチュートリアルがあることがわかりましたので試してみると良さそうです。

* OpenCV-Python Tutorials
    * https://docs.opencv.org/4.5.4/d6/d00/tutorial_py_root.html

## 付録
そのほかいくつかのパッケージなど導入する手順です。

### OpenCV サンプルコード [オプション]
Python から OpenCV を使う場合には、インストール不要ですが
サンプルコードを利用するため、OpenCV 自体をインストールします。

https://opencv.org/releases.html から Windows をダウンロードして
`C:\OpenCV-4.5.4` とかに展開しておきます。



### matplotlib  [推奨]
OpenCV のチュートリアルでも matplotlib は使っているのでインストール推奨です。
pipですんなりとインストールできます。

```
$ pip install matplotlib
```

### scipy [オプション]
scipy も pip で簡単にインストールできるようになりました。

```
$ pip install scipy
```


### ipython  [オプション]

ipython もよく使います。

```
$ pip install ipython
```

### jupyter [オプション]

jupyter も役立ちます。

```
$ pip install jupyter
```

環境が整いました。


## 参考
* http://ymotongpoo.hatenablog.com/entry/2017/02/02/182647
* https://pypi.python.org/pypi/opencv-python