これは、Raspberry Pi OSのBusterでコンパイルする方法です。
いろいろ調べたけど、Bullseyeでopencvをビルドすることは無理みたいです。
Python3用のopencvは、
sudo apt-get install python3-opencv==4.5.5.62
で何とかなるのですけども、(これじたいはBullseyeでもできる)
BullseyeでC++なopencvは無理っぽいです。今のところ。
去年の12月に書いた、opencvのコンパイルは、
カメラが使えなくて、
カメラが使えない原因がさっぱりわからなかったので、
削除しました。そんな使えない記事のせててもしようがないから。
そんなこんなで悩んでいたら、ひょんなことから、コンパイルできました。
ただ、どこを参考にしたのかを覚えていません。
どこだっけ?
そんなこんなで、ほぼ転載なかんじのコンパイルの記事になります。
(完全転載ではない)
ラズパイ4ではうまくいくけど、それ以外のでそのままやろうとすると、
フリーズ(動かなくなる)するので、
よそのopencvの記事を見て、メモリの拡張を行ってからやってください。
たとえば、こことか。
Geanyとかのテキストエディタにコピペしてから、
それをXLTerminalにコピペすると、上手にコマンドを打ち込めます。
sudo apt-get install -y \
build-essential cmake pkg-config \
libjpeg-dev libtiff5-dev libpng-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev \
libgtk2.0-dev libgtk-3-dev \
libcanberra-gtk* \
gfortran \
python2.7-dev python3-dev \
libavresample-dev libtesseract-dev libleptonica-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libhdf5-dev \
libatlas-base-dev liblapacke-dev \
python3-numpy python-numpy libjasper-dev
build-essential cmake pkg-config \
libjpeg-dev libtiff5-dev libpng-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev \
libgtk2.0-dev libgtk-3-dev \
libcanberra-gtk* \
gfortran \
python2.7-dev python3-dev \
libavresample-dev libtesseract-dev libleptonica-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libhdf5-dev \
libatlas-base-dev liblapacke-dev \
python3-numpy python-numpy libjasper-dev
#Protocol Buffer(オプション)
sudo apt install libprotobuf-dev protobuf-compiler
sudo apt install libprotobuf-dev protobuf-compiler
cd ~
#OPENCV_VERSION=3.4.5
OPENCV_VERSION=4.0.1
wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -O opencv-${OPENCV_VERSION}.zip
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -O opencv_contrib-${OPENCV_VERSION}.zip
unzip opencv-${OPENCV_VERSION}.zip
unzip opencv_contrib-${OPENCV_VERSION}.zip
OPENCV_VERSION=4.0.1
cd ~/opencv-${OPENCV_VERSION}
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-${OPENCV_VERSION}/modules \
-D ENABLE_VFPV3=ON \
-D ENABLE_NEON=ON \
-D BUILD_TESTS=OFF \
-D WITH_TBB=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D OPENCV_PYTHON2_INSTALL_PATH=/usr/local/lib/python2.7/dist-packages \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.7/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=ON ..
OPENCV_VERSION=4.0.1
cd ~/opencv-${OPENCV_VERSION}/build
make -j4#OPENCV_VERSION=3.4.5
OPENCV_VERSION=4.0.1
wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -O opencv-${OPENCV_VERSION}.zip
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -O opencv_contrib-${OPENCV_VERSION}.zip
unzip opencv-${OPENCV_VERSION}.zip
unzip opencv_contrib-${OPENCV_VERSION}.zip
OPENCV_VERSION=4.0.1
cd ~/opencv-${OPENCV_VERSION}
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-${OPENCV_VERSION}/modules \
-D ENABLE_VFPV3=ON \
-D ENABLE_NEON=ON \
-D BUILD_TESTS=OFF \
-D WITH_TBB=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D OPENCV_PYTHON2_INSTALL_PATH=/usr/local/lib/python2.7/dist-packages \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.7/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=ON ..
OPENCV_VERSION=4.0.1
cd ~/opencv-${OPENCV_VERSION}/build
OPENCV_VERSION=4.0.1
cd ~/opencv-${OPENCV_VERSION}/build
sudo make install
sudo ldconfig
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
途中の、「-D OPENCV_Python3_INSTALL_PATH」のところは、
Python3のバージョンに合わせて、パスを変更してください。
たとえばBusterなら、Python3は3.7.3が入っているから、
/usr/local/lib/python3.7/dist-packages
に、なります。
Python3のバージョンを調べるには、
python3 --version
これで、調べます。
バージョンが変わると、存在するフォルダも変わります。
実験用のC++のソースコードは、ここにあります。
とりあえず「tesuto.cpp」というファイル名でやるとして、
コンパイルは、次のように打ち込みます。
g++ tesuto.cpp -o tesuto.out `pkg-config --cflags --libs opencv4`
(`は、Shift+@のほうを打つ)。
実行は、
./tesuto.out
Pythonのサンプルは、探せばC++以上にもっと出てくるでしょう。
なお、このビルドでは、C++とPythonでは使えるけど、Javaでは使えません。
もののついでに、raspicamのインストールも。
ラズパイ公式カメラを使わない人は、無理して入れなくてもいいです。
というより、入れてはいけない。
wget https://downloads.sourceforge.net/project/raspicam/raspicam-{CAM}.zip
unzip raspicam-{CAM}.zip
CAM=0.1.9
cd raspicam-{CAM}
mkdir build
cd build
cmake ..
make -j3
sudo make install
sudo ldconfig
これで何とかなります。
最新版しか置いていないみたいなので、公式が0.1.9からバージョンアップした場合は、
CAMのところを、いいかんじに変更してみてください。
raspicam最新版