これは、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

#Protocol Buffer(オプション)
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=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のインストールも。
ラズパイ公式カメラを使わない人は、無理して入れなくてもいいです。
というより、入れてはいけない。

CAM=0.1.9
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最新版