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