概要
ラズパイでプログラムを組んでいて、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)

やったーーー。エラーでない!
まとめ
という感じで、インストールには成功しました。全然まとまっていなくて、すみません。
何かの参考になれば幸いです。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
