CentOSでopencvのVideoCaptureを使いたい

# 0. はじめに
windows環境でopencv-pythonのVideoCaptureを使ったアプリの開発を行い、それをVirtualBoxに立てたlinuxで動かそうとしたら死ぬほどハマった。
作っていたものはopencvのVideoCaptureを使うのだがどうもlinux上だとffmpegを入れてopencvから組み立てなければいけないっぽい。
0から環境を作る。

環境
Red-Hat (64bit)
CentOS-8.5.2111

この記事を書きながらやってるので、もしこの記事を見ながら環境を作る人は読んだとおりに実行するんじゃなくてやろうと思ってる部分の少し先を読んで前もってinstallするとかの方がいい
# 1. ffmpeg
#### 基本
これでうまくいけば解決

    sudo yum install epel-release -y
    sudo yum groupinstall "Development Tools" -y
    sudo yum install cmake git pkgconfig -y
    sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
    sudo yum install ffmpeg ffmpeg-devel -y

    ffmpeg -version

#### epel-releaseがうまくいかない
    sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

#### libSDL2-2.0.so.0()(64bit) が無い
    sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
    sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
    sudo yum install ffmpeg ffmpeg-devel -y
#### SDLがない
    sudo yum install SDL2 SDL2-devel -y
    sudo yum install ffmpeg ffmpeg-devel -y

それでも解決しない場合パワーツール弄って再設定したらいけた

    sudo yum config-manager --set-enabled PowerTools
    sudo yum config-manager --set-enabled powertools
    sudo yum install SDL2 SDL2-devel -y
    sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
    sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
sudo yum install ffmpeg ffmpeg-devel -y

# 2. OpenCV
今回は全然ハマらなかった
依存関係のパッケージをインストール

    sudo yum install gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel libjpeg-turbo-devel libtiff-devel -y
gitからOpencvをクローン、設定

    cd ~
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    cmake -D CMAKE_BUILD_TYPE=Release \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..

    make -j$(nproc)
    sudo make install
    sudo ldconfig

# 3. python入れて確認
    pip install --upgrade pip
    pip install numpy
    pip install opencv-python
あとはpip install opencv-pythonを入れるだけ
#### Building wheelから進まない
    Building wheels for collected packages: opencv-python
     Building wheel for opencv-python (pyproject.toml)
終わらない…
`pip install --upgrade pip`してるのになぜ？

    pip install –upgrade pip setuptools wheel
でアップグレードしてから再度実行
https://stackoverflow.com/questions/63669752/building-wheel-for-opencv-python-pep-517-runs-forev
とはいえビルドプロセスが大きすぎて3時間かかったとの報告もある
自分は30分~1時間でした

    pip install opencv-python -vvv
で実行して進行状況を確認しながらの方がいいかも
####  致命的エラー: Python.h: そのようなファイルやディレクトリはありません
1時間くらいたって、最後の90%くらいで出てくるエラー、心折れる
開発パッケージがないっぽいので

    sudo yum install python3-devel -y

で入れる

#### scikit-buildがない
環境を変えてやったら怒られた

    sudo pip install scikit-build
をしてから

# 4. 実行テスト

    python3 -m venv opencv-env
    source opencv-env/bin/activate
と仮想環境を立て挙げてopencv周りをpipで引っ張る

    pip install --upgrade pip
    pip install numpy
    pip install opencv-python

これで動きました

# 5. 終わりに
近いうちにまた環境を立ち上げることになるのでこれを元に環境構築をする予定。
ハマったら記事の内容も修正します