ラズパイにOpenCV(cv2)をインストールしたらちょっと手こずったので記事にしておく
Contents
ラズパイにOpenCV
Raspberry Pi 4BにOpenCV(cv2)をインストールした時の備忘録。
OpenCV(Open Source Computer Vision Library)はインテル社が開発したオープンソースの画像処理ライブラリー。
Pythonから画像、映像を扱う時はほぼ必須といってもよいライブラリーなのだが pip3 でインストールをするとモジュールが足りないとのメッセージが表示されてしまったので、その時の対応記録を残しておく。
環境
尚、OpenCVをインストールした環境は以下の通り。
OS | Raspberry Pi OS(32-bit)Released 2021-01-11 |
ラズパイ本体 | Raspberry Pi 4B |
Python | Python Version 3.7 ラズパイOSのpythonのデフォルトは2.7になっている。 pythonのデフォルトを3に変更する方法は以前の「RaspberryPiでPythonのデフォルトをPython2.7からPython3に変更する」の記事を参照して欲しい。 |
OpenCVをインストール
インストールコマンド
ラズパイのXLTerminalから以下のコマンドでOpenCVをインストールした。
sudo pip3 install opencv-python

インストール自体は何のエラーも出ずに終了したのだがcv2を import しようとすると “ImportError: libcblas.so.3: cannot open shared object file: No such file or directory” でエラーになってしまう。
パッケージの検索
libcblas.so.3 オブジェクトファイルが見つからないとのエラー。
OpenCVが内部で使用しているパッケージが不足しているだと思われる。
Raspberry Pi OSのベースは Ubuntu なので ubuntu のパッケージ検索のページにて対象パッケージの検索を行う。
- キーワード:libcblas.so.3
- キーワードを名前に含むファイルが含まれるパッケージ
- ディストリビューション:bionic
- アーキテクチャー:すべて
「検索」ボタンをクリックする。
尚、bionic は Ubuntu 18.04LTS のバージョン名。
16.04LTSが Xenial、20.04LTSが Focal のバージョン名となっている。

ラズパイの armプロセッサーの部分を見ると libatlas3-base パッケージに libcblas.so.3 が含まれている事が分かる。

libatlas3-base パッケージはubuntuのドキュメントによると「オートマチックにチューンされた線形代数のソフトウェア」との事。
cv2 で線形代数の計算の際にこのパッケージを使用するのだと思う。
パッケージの追加
以下のコマンドで libatlas3-base パッケージをインストールする。
sudo apt-get install libatlas3-base
libatlas3-base パッケージをインストールしたら今度はエラーにならずに cv2 を import できた。

以上でラズパイにOpenCV(cv2)のインストールをした記事を終了とする。
上記の手順でインストールした後、import cv2 にてnumpyのバージョンが違うと RuntimeError が発生してしまった事があった。
その時の対処方法を別記事にしておく。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
こちらのページが大変参考になり、何時間もできずに悩んでいたことが解決しました。ありがとうございます。私の環境ではpython3 ○○.pyというようにヴァージョンを指定して実行しなければならいようでした。
ひねくれ草 さん
コメント、ありがとうございます。
解決したようで何よりです。
pythonのバージョン指定に関してはデフォルトが2.xになっているのだと思います。
デフォルトを3.xに変更する方法と記事中に追記しておきますね。