この記事はどんな人が読むといいの?
macを使っていて、すでにOpenCVをインストールされている人や、どうしても公式のOpenCVが使いたい〜って人向けです。(需要は少ないかも?)
windowsでもやることは同じなので、参考程度にしてみてください。ただし、あくまでも参考です。
私も初心者なので、至らぬ点が多々ございますが、始めさせていただきます。
OpneCVとは・・・
大雑把に言えば、画像・動画に関するプログラミングに特化したオープンソースのライブラリ。
細かく言えば、面倒なのでやめておきます。...理解してないわけじゃないよ?
まあ、画像や動画の処理をしたり、物体検出をしたり、さらにはモーション解析や物体追跡を簡単に行えるようになるライブラリです。
このエサ(OpenCV)をPythonちゃんに食べさせる(importする)と、Pythonちゃんは上機嫌になって、いろんな芸(機能)を見せてくれるのであります。
元々はC/C++向けですが(間違えていたらすみません)、Pythonバインディングが用意されているので、いろいろ面倒なCよりもPythonから使うのが楽ということです。
PythonでOpenCVを使うメリット | |
---|---|
1 | コードが短く、読みやすい |
2 | scipyやnumpyなど、他のライブラリと連携しやすい |
3 | エラーの原因を特定しやすい |
画像処理ならMATLABがあるじゃないだって?
知らない子ですね。そんなお金のかかる言語はワタシシラナイ。
OpenCVってもうpip installできるじゃん。
そうなんです。
$ pip install opencv-python
最近は、このコマンド一発でimportできるようになってしまったので、以前の苦労はなんだったんだ、、と思わないでもありませんが、許します。
簡単に使えるなら、pip install してしまえばいーじゃんと思ったそこの貴方!正解です!今すぐインストールして、チュートリアルをしましょう!
ただし、すでにOpenCVがインストールされている人・どうしてもビルド済みのOpenCVが使いたい人は、次でシンボリックリンクやらなんやらをします。
※pipでインストールできるOpenCVはデフォルトでCUDAを利用したGPU計算ができないので、CUDAを利用できるようにOpenCVを既にビルドしている方などは、下記の方法でCUDAありのOpenCVを使えるようになります。
(OpenCVのビルド時にpythonの場所を指定することができるので、その指定を行ってビルドしていればimport cv2
ができるようになっているはずです。)
PythonでOpenCVを使うための手順
PythonとOpenCVのバージョン
私の環境では
Python : 3.6.2
OpenCV : 3.4.1-4
です。お使いの環境に合わせてバージョンを変更してください。
また、事前にnumpyをインストールしておきましょう。
PythonでOpenCVが使えるようになるまでの流れ
- brewでOpenCVをインストール
- Pythonのsite-packagesの場所を調べる
- OpenCVへのシンボリックリンクを生成する
- cv2が使えるか確認する
brewでOpenCVをインストール
$brew install opencv
これだけで、/usr/local/bin/に住んでいるpythonではimport cv2が使えるようになるらしいです。
でも私のパイソンちゃんは別の場所を住処としているので、エサ(OpenCV)をpythonちゃんに届けてあげなくてはいけません。
venv, virtualenvで使用しているpythonも/usr/local/bin/にいないので、こちらもまた、OpenCVの場所を教えてあげる必要があります。
次に、brewでインストールされたOpenCVの場所を確認しましょう。
おそらく、下のディレクトリあたり。バージョンが違うと数字も異なります。
/usr/local/Cellar/opencv/3.4.1-4/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so
これがエサの場所です。
Pythonのsite-packagesの場所を調べる
site-packagesとは、サードパーティ製のライブラリの置き場のことです。つまり、エサ箱です。
エサ箱の場所ですが、pythonちゃんに直接聞いてしまいましょう。
pythonの対話型シェルを起動して、現在使用しているpythonのsite-packagesの場所を調べます。
$ python
>>> import site; site.getsitepackages()
['/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
お使いの環境によって異なりますが、私の場合、
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
がエサ箱の場所です。
OpenCVへのシンボリックリンクを生成する
シンボリックリンクとは、とあるフォルダやファイルのリンクを保持しているもの。
今回の説明で行くと、エサの転送装置のようなものです。
この転送装置を使ってエサをエサ箱に届けてあげるのです。
シンボリックリンクの生成は、pythonのsite-packages内で行います。
cd /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
$ ln -s /usr/local/Cellar/opencv/3.4.1-4/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so ./
これで転送装置ができ、pythonちゃんにエサを届けることができました。
あとは使うだけです!
cv2が使えるか確認する
Pythonの対話型シェルを起動し、OpenCVのバージョンが表示されるか試してみましょう。
$ python
>>> import cv2
>>> cv2.__version__
'3.4.1-4'
正しいバージョンが表示されれば成功です。
これでようやくPythonでOpenCVを使うことができるようになりました。
なんと面倒なことでしょう。お疲れ様でした。
やっぱり pip install した方が圧倒的に早くて楽
冗長な文章にお付き合い頂き、ありがとうございました。