raspberry pi にpython3のopencv を入れる簡単な話

はじめに

raspberry pi にpython3で使えるopencvを導入するのに大変だったと言う話をちらほら聞いたのでメモ

魔法のaptでシステムを更新しておく

更新コマンドを、最近全然やっていない方はこれを行ってください。

sudo apt update
sudo apt upgrade -y
sudo reboot

pipでopencvを入れる

pipをインストールしたあとに、opencvをpipで導入します。

numpyのコンパイルに時間がかかるのでしばらく待ちましょう

(https://www.piwheels.org/simple が混み合っているとHandshakeエラーになるかも。時間をおいてから再度ちゃれんじ?)

sudo apt install python3-pip -y
pip3  --default-timeout=1000 install opencv-python

contribなopencvはこちらになります。

pip3 --default-timeout=1000  install opencv-contrib-python

ライブラリを入れる

上記でopencv自体は入りましたが、ライブラリが足りないので次のようなエラーが起きます。

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/.local/lib/python3.5/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
ImportError: liblapack.so.3: cannot open shared object file: No such file or directory

なので起動に必要なライブラリをaptで入れていきます。

 
sudo apt-get install libcblas-dev libhdf5-dev libhdf5-serial-dev \
                     libatlas-base-dev libjasper-dev  libqtgui4  \
                     libqt4-test libgstreamer1.0-0 libwebp-dev \
                     libilmbase-dev libopenexr-dev libavcodec-dev \
                     libavformat-dev libswscale-dev libharfbuzz-dev -y

インストールが終わるとインポートできるようになります。

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

おまけ

python2のopencvはaptで入ります。

sudo apt install python-opencv
pi@raspberrypi:~ $ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>