OpenCVとは、画像や動画を処理、解析したりするのに必要なライブラリィです。
OpenCVをPythonで使う場合は、以下でインポートして使用します。
import cv2
ただ、importできるまでに多くのエラーが出て、悪戦苦闘したので一連の作業をメモとして残しておきます。
まずは、OpenCV が依存しているライブラリを事前にインストールします。
$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100 $ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 $ sudo apt-get install libatlas-base-dev $ sudo apt-get install libjasper-dev
pip/pip3をインストールします。
$ sudo apt install python-pip python3-pip
pip3 で OpenCV をインストールします。
$ sudo pip3 --default-timeout=1000 install opencv-python
インストールできたか確認します。
$ 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 >>> cv2.__version__ '3.4.4’ '3.4.4'
Python3でOpenCVのインポートエラーが出る場合の対策を行います。
ターミナルで以下を実行
$ LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
次にviで編集
$ vi .bashrc export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 #追加
最後に以下で適用
$ source .bashrc
インストールできていることを確認します。
$ python3 Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '4.1.1'
以上でインストールは完了です。
あと、追加で以下の設定を行いました。
Raspberry Pi Camera Module V2 は、そのままでは OS のビデオデバイス( /dev/video0 )として認識しません。OpenCVで処理させるためには、以下の手順を用いてビデオデバイスとして認識させておきます。
<手動で都度行う> $ sudo modprobe bcm2835-v4l2 $ ls /dev/video* /dev/video0 <起動時の設定に追加> $ sudo nano /etc/modules (最下部に以下を追加) bcm2835-v4l2 $ sudo reboot
もし AttributeError: module ‘cv2.cv2’ has no attribute ‘face’ というエラーが出たら、下記のコマンドを実行してインストールします。
$ sudo pip3 install opencv-contrib-python
とりあえず、ここまでやれば大丈夫だと思います…
お世話になります。
OPENCVのインストールの件でエラーメッセージでアドバイスをいただき、実行しましたが現象はおなじです。
エラーメッセージ。
python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import cv2
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python3.7/dist-packages/cv2/__init__.py”, line 5, in
from .cv2 import *
ImportError: numpy.core.multiarray failed to import
>>> exit()
NumPyをアップグレードしたけどエラーが消えてないですね。
古いNumpyが入っていて、そちらが呼ばれている可能性はないでしょうか?
ちなみに私の環境だと以下になっています。
$ python3
>>>import sys
>>>sys.path
[”, ‘/usr/lib/python37.zip’, ‘/usr/lib/python3.7’,
‘/usr/lib/python3.7/lib-dynload’,
‘/usr/local/lib/python3.7/dist-packages’,
‘/usr/lib/python3/dist-packages’]
上から順番に検索されるので、古いバージョンが上にあるとそちらを優先するみたいです。
以下サイトが参考になるかもしれません。
https://qiita.com/kai0706/items/8169d01a83f63fc4a0bd
以上、宜しくお願いいたします。