【ラズパイ】解決!ModuleNotFoundError: No module named ‘cv2’【python】

目次

概要

ラズパイでプログラムを組んでいて、OpenCVのインストールが完了したので、

その軌跡を綴ります。

正直、色々やりすぎて、何が正解かわかってなくて、余計なことをしているかもしれないので、

そのあたりは勘弁してください。

ラズパイは「Raspberry Pi 3」を使っています。

インストールにはめちゃくちゃ時間がかかるので、バッテリではなく、家庭用コンセントから電源もらってください。

私は8時間くらいかかりました。

スワップサイズ領域の増築

まず、スワップサイズを変更しました。

上の画像はうまくいっていない時ものです。Swpがいっぱいなのがわかると思います。

一時的にスワップ領域を増やすことで、ビルド中のメモリ不足問題を緩和できることがあります。スワップ領域を増やすには、以下のコマンドを実行します。

1、スワップファイルの作成

sudo dd if=/dev/zero of=/swapfile bs=2G count=1

ここで bs=1G はブロックサイズを1GBに設定し、count=1 はそのブロックを1回書き込むことを意味します。

2、スワップファイルの権限設定

スワップファイルの権限を設定し、システムが安全に使用できるようにします。

sudo chmod 600 /swapfile

3、スワップエリアの設定:

/swapfile をスワップエリアとして設定します。

sudo mkswap /swapfile

4、スワップエリアの有効化

新しく作成したスワップファイルを有効にします。

sudo swapon /swapfile

これで、システムに追加のスワップスペースが提供され、ビルドプロセス中のメモリ不足問題が緩和される可能性があります。ビルドが完了したら、以下のコマンドを使用してスワップファイルを無効にし、削除してください:

sudo swapoff /swapfile
sudo rm /swapfile

dd コマンドはディスク書き込みを行うため、特に大きなサイズを指定する場合は実行に時間がかかることがあります。

Swpが2.00Gになっているのがわかると思います。

htopで処理を可視化

あまりに処理が長く、フリーズしているんじゃないかと思うので、処理がきちんと行われているか可視化します。

ターミナルに

htop

と打ってください。

htopと打ったら、上の画像のようなことになります。

公式ドキュメントの手順で進む

ここからはOpenCVの公式ドキュメントの順で進みます。公式URL → https://opencv.org/

ソースからビルドします。

1、ビルドツールとPythonバインディング

sudo apt-get install cmake gcc g++
sudo apt-get install python3-dev python3-numpy

2、メディアサポート

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

3、GTKサポート(GUI機能)

sudo apt-get install libgtk-3-dev

4、GitとOpenCVのソースのダウンロード

sudo apt-get install git
git clone https://github.com/opencv/opencv.git

これで、カレントディレクトリにopencvフォルダが作成されます。

5、ビルドフォルダの作成と移動

cd opencv
mkdir build
cd build

6、CMakeを使用した構成

cmake ../

ビルドとインストール(8時間くらいかかりました。)

make
sudo make install

makeに8時間くらいかかりました。

Uptimeが08:30:04になっているのがわかると思います。

インストール後の確認

新しくターミナルを開いて、

python3

と打って、Pythonインタープリターを起動します。

import cv2
print(cv.version)

と入力してください。エラーがでなきゃインストール成功です。

また、ModuleNotFoundError: No module named ‘cv2’

私は、また、ModuleNotFoundError: No module named ‘cv2’と出てしましました。。

心が折れそうです(T ^ T)

OpenCVのインストール先を確認

OpenCVがPythonのサイトパッケージディレクトリに正しくインストールされているか確認することにしました。

1、Pythonのサイトパッケージディレクトリの確認

python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

これにより、Pythonのサイトパッケージディレクトリのパスが表示されます。

2、 サイトパッケージディレクトリ内のOpenCVの確認

cd [サイトパッケージディレクトリのパス]
ls | grep cv2

ここで[サイトパッケージディレクトリのパス]は、前のステップで確認したパスに置き換えてください。cv2やcv2..so(LinuxやmacOSの場合)、cv2..pyd(Windowsの場合)のようなファイルがリストされれば、OpenCVがインストールされています。

3、PYTHONPATHの確認

OpenCVがサイトパッケージディレクトリに存在するにも関わらず、まだインポートできない場合は、PYTHONPATH環境変数が正しく設定されているか確認します。

echo $PYTHONPATH

このコマンドで表示されるパスに、OpenCVのサイトパッケージディレクトリが含まれている必要があります。含まれていない場合は、以下のコマンドを使用してPYTHONPATHに追加します。

export PYTHONPATH=$PYTHONPATH:[サイトパッケージディレクトリのパス]

このコマンドは現在のセッションにのみ適用されます。

ここまで進んだら、また、インタープリターを開いて、

import cv2

としてください。

私の場合、まだ、ModuleNotFoundError: No module named ‘cv2’と出ます。吐きそうです。

cmakeの見直し

1、Pythonインタープリターを確認する

which python3

と打ってください。私の場合、出力は「/usr/bin/python3」でした。

このコマンドは、システムで使用されているPythonインタープリターの絶対パスを表示します。表示されたパスは、Pythonがインストールされている場所を示しており、これを使用して、インストールされたOpenCVがそのPythonバージョン用であるかどうかを確認できます。

例えば、/usr/bin/python3が表示された場合、システムのデフォルトのPython 3インタープリターを使用しています。OpenCVをこのPythonインタープリターで利用可能にするためには、OpenCVのインストールプロセスがこのインタープリターに対応している必要があります。

OpenCVをインストールする際に、Pythonのバインディングをビルドするプロセス(CMakeを使用したコンフィギュレーション)で、正しいPythonインタープリターとライブラリが指定されていることを確認することが重要です。これは、CMakeの出力で確認できます。Pythonライブラリとインタープリターのパスが、whichコマンドで得られたパスと一致しているかを確認してください。

2、cmakeの見直し

which python3の結果が/usr/bin/python3であることを考慮して、OpenCVをビルドする際にPython 3の正しいインタープリタをCMakeに指示するためのコマンドを構成します。このパスを使用して、CMakeがPython 3バインディングを適切に構成できるようにします。

cd /path/to/opencv/build
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.x \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.x.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D BUILD_EXAMPLES=ON ../

*cdは自身のOpenCVが入っているパスを指定してください。

次にmakeコマンドを打ちます。

make

最初のmakeほどではないですが、今回も結構長いです。

makeが完了したら、

sudo make install

このコマンドは、ビルドしたファイルをシステムの適切なディレクトリにコピーし、インストールします。

3、インストール後のステップ

インストールが完了したら、いくつかの追加のステップを実行して、システム設定を更新することが推奨されます。

ldconfigの実行

インストール後、システムのライブラリキャッシュを更新するためにldconfigコマンドを実行します。これにより、新しくインストールされたライブラリが正しく認識され、他のプログラムから利用可能になります。

sudo ldconfig

インストール確認

Pythonインタープリタを開き、OpenCVモジュール(cv2)をインポートし、そのバージョンを確認します。

import cv2
print(cv2.version)

やったーーー。エラーでない!

まとめ

という感じで、インストールには成功しました。全然まとまっていなくて、すみません。

何かの参考になれば幸いです。

スクールの紹介

ここまで読んでいただき、ありがとうございました。

最後に宣伝をさせてください。

夢見るAIエンジニアへ、今こそ一歩を踏み出せ!

最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。

しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!

なぜこのサービスが選ばれるのか?その理由はこちら

  1. 初心者から上級者まで
    完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。
  2. 徹底的な進捗管理
    受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。
  3. 専属メンターによる徹底サポート
    AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。
  4. 場所を選ばず学べるオンライン完結
    東京以外の地域からも、気軽に学び始めることができます。

信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現

夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次