2026.07.21
ラズパイへのOpenCVの導入方法~生成AIを活用して実装
#ラズパイ #OpenCV #C #ETロボコン #電気電子 #組込制御
トップ > 技術ナレッジのアーカイブ > ラズパイへのOpenCVの導入方法~生成AIを活用して実装
2026.07.21
#ラズパイ #OpenCV #C #ETロボコン #電気電子 #組込制御

こんにちは。テクノプロ・デザイン社の前田です。
私はETロボコンという組込みソフトウェア技術の学習を目的とした教育型ロボットコンテストに参加しました。
ETロボコンの攻略にOpenCVの活用は必須でした。そこで、私は生成AIを使って実装を試みたところ、非常にわかりやすくOpenCVを導入することができましたので、今回はその手順を示します。
この記事では、生成AIをほとんど使用していない方に向けて、その使い方や使用結果の一例を紹介します。
比較的わかりやすい活用方法や、その具体例をプロンプトと共に示します。
大学卒業後、テクノプロ・デザイン社の前身の会社に入社
機械系(自動車製造や部品製造関連)の業務を20年以上経験
システム経験としては、開発外注のほか、自ら業務内の単純作業に対してVBAで改善ツールを開発した経験があります。
昨年(2025年)に47歳でETロボコンへ初めて参加
ETロボコン活動の中で、Raspberry Pi、Linux、C++、生成AIに初めて触れる
このテクノヒントへの記事投稿も今回が初めてです。
生成AIに以下の指示をしました。
#命令書
OpenCVのインストール方法の種類について教えて
#制約条件
・Raspberry Pi4(Debian)へインストール
・開発言語はC++
・メリットとデメリット、向いている用途について箇条書き
これに対して、以下のような回答がありました。
Raspberry Pi4(Debian系OS)でC++開発向けにOpenCVをインストールする方法は主に3種類あり、それぞれメリット・デメリット・向いている用途が異なります。
●メリット
・公式リポジトリから簡単にインストールできる
・依存関係が自動で解決される
・C++開発環境(ヘッダ・ライブラリ)がすぐ揃う
●デメリット
・バージョンが古いことが多い(RaspberryTipsでもAPT版は古いと指摘)
>>RaspberryTips(引用元リンク)
・最適化が弱い(NEON/VFPv4最適化が限定的)
●向いている用途
・とにかく早く動かしたい
・最新機能が不要
・学習用途・軽い画像処理
●メリット
・最新のOpenCVを利用できる(4.x系など)
・opencv_contribを含めてビルド可能(SIFT/SURF/ArUco など)
・Raspberry PiのCPU(NEON最適化)に合わせて高速化できる
・C++用のヘッダ・ライブラリが正しく配置される
●デメリット
・ビルドに数時間かかる(Pi4でも2〜4時間)
・依存関係の解決やCMakeオプションの理解が必要
・ストレージ容量を多く使う(数GB)
●向いている用途
・最新機能を使いたい
・高速化したい(NEON/TBB/OpenCL)
・産業用途・ロボット用途など本格的なC++開発
●メリット
・Pythonではすぐ使える(学習用途に便利)
・C++でもライブラリを手動で指定すれば利用可能
●デメリット
・C++用のヘッダが標準パスに無い場合がある(特にOpenCV 4.x)
・-I /usr/local/include/opencv4などの手動設定が必要
・Python版はC++開発向けではない
●向いている用途
・PythonとC++を併用したい
・既にpip版を使っていてC++も試したい
・小規模プロジェクト
| 方法 | APT | ソースビルド | pip併用 |
|---|---|---|---|
| バージョン | 古い | 最新 | Python版のみ最新 |
| C++対応 | ◎ | ◎ | △(手動設定必要) |
| 導入難易度 | 低 | 高 | 中 |
| ビルド時間 | 不要 | 長い(2〜4h) | 不要 |
| 最適化 | 弱い | 強い(NEON/TBB) | 弱い |
| 向き | 初心者・軽量用途 | 本格開発・高速化 | Python併用 |
本格にC++で使うなら → ソースビルド一択
・最新機能
・高速化
・contrib モジュール利用可
・Raspberry Pi4の性能を最大限活かせる
とりあえず動かしたい → APT
・依存関係が自動で解決
・すぐにC++コードを書ける
Pythonも使うなら → pip + C++ 手動設定
ただし C++ ではヘッダパス問題に注意(実例あり)
上記の情報をもとに「2.ソースコードからビルド」を選択します。
チャットページを切り替えず、そのまま追加でチャットを入力します。
#命令書
ソースコードからビルドする手順を教えて
#制約条件
・OpenCVは最新版を取得
・opencv_contribも取得
・Raspberry Pi4(Debian系)で開発環境C++に最適化
これに対して、以下のような回答がありました。
Raspberry Pi4(Debian系)で OpenCV 最新版 + opencv_contrib を C++ 向けに最適化してビルドする手順は、①依存パッケージ導入 → ②最新版取得 → ③CMake設定(NEON最適化)→ ④ビルド → ⑤インストール の流れで進めるのが最も安定します。
以下に完全版の手順をまとめます。
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential cmake git pkg-config \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev v4l-utils \
libxvidcore-dev libx264-dev \
libgtk-3-dev \
libatlas-base-dev gfortran \
python3-dev python3-numpy
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
※最新版(master)を取得するためブランチ指定は不要
※特定バージョンが良ければ git checkout 4.10.0 のように指定
cd ~/opencv
mkdir build
cd build
Raspberry Pi4 の ARM Cortex-A72 に最適化するため、NEON / VFPV4 / TBB / GStreamer / V4L2 を有効化します。
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV4=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_GSTREAMER=ON \
-D WITH_OPENGL=ON \
-D BUILD_opencv_python3=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
..
ENABLE_NEON=ON
ARM向け高速化(行列演算・画像処理が高速)
ENABLE_VFPV4=ON
浮動小数点演算の高速化
WITH_TBB=ON
マルチスレッド最適化
WITH_V4L=ON
カメラ入力(/dev/video0)を高速化
WITH_GSTREAMER=ON
動画処理パイプラインを高速化
make -j4
sudo make install
sudo ldconfig
上記「1.依存パッケージ」の各項目(ライブラリ)の意味を知りたい場合や、上記「4.CMake設定」の各項目の意味を知りたい場合は同様にChatで確認できますので、各自試してみてください。
依存パッケージ(OpenCVのビルドに必要なライブラリ)をそれぞれ説明して
と指示したところ以下の回答がきました。
C/C++ のコンパイルに必要な基本ツール(gcc, g++, make など)のセット。OpenCV のビルドに必須。
OpenCV のビルド設定を生成するツール。CMakeLists.txt を読み取り、Makefile を作る。
OpenCV と opencv_contrib の最新版を GitHub から取得するために使用。
インストール済みライブラリのパスや設定を取得するツール。
確認した内容をもとにRaspberry Pi4にOpenCVのビルド&インストールを行います。(下記(1)~(6)で計2.5時間かかりました)
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential cmake git pkg-config \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev v4l-utils \
libxvidcore-dev libx264-dev \
libgtk-3-dev \
libatlas-base-dev gfortran
バックスラッシュ入力後、改行してください。
上記は複数のライブラリを一気にインストールしようとしています。
生成AI(Copilot)の説明通りにインストールしたい場合(途中で改行する場合)は
\(バックスラッシュ)を入力し、エンターキー(改行)を押下します。
\は日本語キーボードでは¥キーとなります。
生成AIの通りのライブラリ(libatlas-base-dev)をインストールすると、2026/05/28時点、次のエラーが発生します。
エラー例は以下のようなものになります。
エラーの対処法も生成AIで確認します。
結論として、このエラーは Debian 系のリポジトリから libatlas-base-dev が削除された/提供されていないことが原因です。
Raspberry Pi OS(Debian 派生)では以前存在していましたが、最近の Debian では ATLAS が非推奨になり、代わりに OpenBLAS が推奨されています。
下記の様に一部ライブラリを変更してインストールします。
sudo apt install -y build-essential cmake git pkg-config \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev v4l-utils \
libxvidcore-dev libx264-dev \
libgtk-3-dev \
libopenblas-dev liblapack-dev gfortran
改行せずに1行でコマンドを入力したい場合は、\を入力せずに続けて各ライブラリを入力することもできます。
(例)
sudo apt install -y build-essential cmake git pkg-config libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev v4l-utils libxvidcore-dev libx264-dev libgtk-3-dev libopenblas-dev liblapack-dev gfortran
別の方法として各ライブラリを1~3個ずつインストールすることも可能ですので、入力間違いを避けたい方は下記の様な個別のインストールを推奨します。
sudo apt install -y build-essential cmake git pkg-config
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y libv4l-dev v4l-utils
sudo apt install -y libxvidcore-dev libx264-dev
sudo apt install -y libgtk-3-dev
sudo apt install -y libopenblas-dev liblapack-dev gfortran
※生成AIが示すpython3-devとpython3-numpyについては、今回pythonを使用しない前提の為、インストールしません。
cd ~
git clone https://github.com/opencv/opencv.git
ホームディレクトリに移動します。すると以下のように「opencv」というフォルダが生成されます。
git clone https://github.com/opencv/opencv_contrib.git
以下のように「opencv_contrib」というフォルダが生成されます。
cd ~/opencv
mkdir build
cd build
~/opencv/build $
以下のように「build」というフォルダが生成されます。
生成AIの説明に記載がなかった設定値についても、追加で確認を行い、Raspberry Piに関係する内容を必要最小限で追加します。
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV4=ON \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_IPP=OFF \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_JPEG=ON \
-D WITH_GTK3=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_EIGEN=ON \
-D BUILD_OPENCV_PYTHON=OFF \
-D BUILD_OPENCV_JAVA=OFF \
-D BUILD_OPENCV_JS=OFF \
-D BUILD_OPENCV_WORLD=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=ON \
-D BUILD_DOCS=OFF \
-D BUILD_ZLIB=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
..
(記入プロンプト〔1行入力〕)
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D ENABLE_NEON=ON -D ENABLE_VFPV4=ON -D WITH_TBB=ON -D WITH_OPENMP=ON -D WITH_IPP=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_JPEG=ON -D WITH_GTK3=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_V4L=ON -D WITH_LIBV4L=ON -D WITH_EIGEN=ON -D BUILD_OPENCV_PYTHON=OFF -D BUILD_OPENCV_JAVA=OFF -D BUILD_OPENCV_JS=OFF -D BUILD_OPENCV_WORLD=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=ON -D BUILD_DOCS=OFF -D BUILD_ZLIB=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=OFF ..
各設定項目についての解説です。
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
#ビルドをリリースモードで行う(デバック情報が削除)
-D CMAKE_INSTALL_PREFIX=/usr/local \
#インストール先
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
#「opencv_contrib」のモジュールを追加
-D ENABLE_NEON=ON \
#ラズパイ4BのARM Cortex-A72プロセッサに搭載されているNEON SIMD命令セットを有効にする(画像処理の演算が大幅に高速化)
-D ENABLE_VFPV4=ON \
#VFPv4を有効にする(浮動小数点演算を高速化)
-D WITH_TBB=ON \
#Intel TBBによる並列処理を有効にする(並列処理をより細かく制御するためのライブラリ。RaspberryPi4Bでも有効)
-D WITH_OPENMP=ON \
#OpenMPによるマルチスレッド処理を有効にする(複数のCPUコアを効率的に利用。並列処理をサポート)
-D WITH_IPP=OFF \
#Intel専用ライブラリなのでOFF
-D WITH_FFMPEG=ON \
#FFmpegによる動画入出力をサポート
-D WITH_GSTREAMER=ON \
#GStreamerによる映像入出力をサポート(RaspberryPiOS推奨)
-D WITH_JPEG=ON \
#JPEGライブラリを有効にする。画像の圧縮・解凍処理に不可欠)
-D WITH_GTK3=ON \
#GUI表示にGTKを使用 (RaspberryPiOS標準)(RaspberryPiOSではGTK3推奨)
-D WITH_QT=OFF \
#QTは重いため無効化 (GTKとQtは通常どちらか一方を選択)
-D WITH_OPENGL=ON \
#OpenGLによる描画支援(軽量なGPU支援)
-D WITH_V4L=ON \
#Video4Linuxを有効化(USBカメラ対応)
-D WITH_LIBV4L=ON \
#libvlを使ったカメラサポート
-D WITH_EIGEN=ON \
#線形代数ライブラリを有効化する (高精度な数値処理や幾何変換を行う予定があるなら有効に)
-D BUILD_OPENCV_PYTHON=OFF \
#Pythonバインディングは不要(C++環境のみなら不要)
-D BUILD_OPENCV_JAVA=OFF \
#Javaバインディングは不要(C++環境のみなら不要)
-D BUILD_OPENCV_JS=OFF \
#javaScriptバインディングは不要(C++環境のみなら不要)
-D BUILD_OPENCV_WORLD=OFF \
#全てのモジュールを1つのライブラリへ統合を無効化 (分割の方が柔軟)
-D BUILD_TESTS=OFF \
#OpenCVのユニットテストは省略してビルド時間短縮
-D BUILD_PERF_TESTS=OFF \
#パフォーマンステストは省略してビルド時間短縮
-D BUILD_EXAMPLES=ON \
#サンプルコードのビルドを有効にする(学習用に便利な為 始めはインストールしておいた方が...)
-D BUILD_DOCS=OFF \
#ドキュメントを生成 (通常は不要)
-D BUILD_ZLIB=OFF \
#Zlib(圧縮ライブラリ)をOpenCV内部でのビルドを有効化する (用途=PNG画像の読み書き、圧縮されたデータの処理など)(通常はBUILD_ZLIB=OFF にして、システムのZlibを使う方が軽量で高速)
-D BUILD_opencv_python2=OFF \
#今回はC++用の為Pythonは不要
-D BUILD_opencv_python3=OFF \
#今回はC++用の為Pythonは不要
-D OPENCV_ENABLE_NONFREE=ON \
#SIFTやSURFなどの非フリーアルゴリズムを有効化
-D OPENCV_GENERATE_PKGCONFIG=ON \
#pkg-configファイルを生成する。コンパイル時に「pkg-config --cflags --libs opencv4」の様に簡単にライブラリへのパスを指定できるようになる
-D INSTALL_C_EXAMPLES=ON \
#C/C++用のサンプルプログラム
-D INSTALL_PYTHON_EXAMPLES=OFF \
#Python用のサンプルプログラムは不要
..
#「..」は終端を意味します。
ビルドする際にONやOFFを指定していないとどのようになりますか?
と入力すると、以下のように返してきました。
CMakeでOpenCVをビルドする際に -D オプション名=ON や =OFF を指定しない場合、そのオプションは以下のようなルールに従って自動的に決定されます:
OpenCVのCMakeLists.txtでは、各オプションに初期値(ONまたはOFF)が定義されています。たとえば:
cmake
option(BUILD_opencv_python3 "Build Python 3 bindings" ON)
この場合、指定しなければ ON になります。
CMakeは、システムにインストールされているライブラリやツールを検出して、オプションの有効・無効を自動で切り替えることがあります。
| オプション | 自動判定の例 |
|---|---|
| WITH_TBB | libtbb-dev がインストールされていれば ON になる可能性あり |
| WITH_GTK | GTKが見つかれば ON、なければ OFF |
| BUILD_opencv_python3 | Python3が見つかれば ON、なければ OFF |
つまり、環境によって結果が変わるため、意図しない構成になることもあります。
make -j4
sudo make install
sudo ldconfig
pkg-config --modversion opencv4
以下の手順で動作を確認します。
1.CMakeLists.txtをダブルクリック
2.スクリプトを修正
(元々のプロンプト)
install(FILES "opencv2/opencv.hpp"
DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
COMPONENT dev)
以下に修正
(記入プロンプト)
cmake_minimum_required(VERSION 3.5)
project(opencv_example_project)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
find_package(OpenCV REQUIRED)
add_executable(OpenCVTest test.cpp)
target_link_libraries(OpenCVTest ${OpenCV_LIBS})
3.上書き保存
1.test.cpp を新規作成
2.test.cpp を開く
3.スクリプトを入力
(記入プロンプト)
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(){
VideoCapture cap(0);
if(!cap.isOpened()){
std::cerr << "The camera couldn't open." << std::endl;
return -1;
}
Mat frame, gray, edges;
while(true){
cap >> frame;
if(frame.empty()) break;
cvtColor(frame, gray, COLOR_BGR2GRAY);
Canny(gray, edges, 50, 150);
imshow("Original", frame);
imshow("Canny Edge", edges);
if(waitKey(1)=='q') break;
}
cap.release();
destroyAllWindows();
return 0;
}
4.上書き保存
cd opencv/include
mkdir build
cd build
cmake ..
make
./OpenCVTest
画面上に下記の様なウィンドウが2つ表示され、1つはカメラから見えている描写、もう1つはOpenCV によりエッジ検出(Canny)を行った描写が表示される (OpenCVが正常動作していることが確認できる)
画面をアクティブにしている状態で「q」キーをタイプすることで、2つのウィンドウが消え、プログ ラムが終了します。
この記事での活用例は、ごく簡単な一例ですが、活用できそうな機能から徐々に慣れる手助けやヒントに
なれば幸いです。
私はこれまでググる派でしたが、今回のようにRaspberry Pi4へのOpenCV導入方法をGoogleで調べると、古い記事が上位に表示され、載っていたとしても断片的な内容しかありませんでした。そのため断念しかけていたのですが、知人に薦められて試しに使ってみると、意外と精度の高いレスポンスがあり驚きました。
(一部回答に誤りが含まれる場合がある為、事実確認は追加で行う必要はありますが...(-_-;))
皆様も活用を進めていただければと思います。