LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか


エムportuguês .
OpenCVは図書館の獣です.それは巨大です.しかし、それはまた、超柔軟です.通常、あなたのバイナリがオプションの依存関係を提供することによって含まれますが、時には必要な方向にそれをかたくなければならないものを選択します.
このガイドでは、私があなたがこれまでに見られる最も長いcmakeラインでそれをコンパイルする方法をあなたに教えます.
始めましょう.

ダウンロード


OpenCVをビルドするには2つのプロジェクトが必要ですOpenCV ソースコードとOpenCVcontrib .
あなたはzip/tarボールとして最新のバージョンをダウンロードするか、それらをクローン化することができますし、チェックアウトバージョン(別名タグ)が必要です.
あなたが選ぶどんな方法でも、このチュートリアルの目的のために、あなたが必要とするすべては、両方のプロジェクトが同じフォルダの上に互いの隣に座ることです:

依存


すべてのdepenciesをインストールするならば、Bellowについて説明します.
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 alphamat cnn_3dobj hdf java julia matlab ovis python2 sfm ts viz
これはあなたが必要とするものです.
  • python3 + numpy - 私は一般的に、任意のVANV/Virtualenvサンドボックスの外にグローバルにインストールします.OpenCVがグローバルにインストールされているので、必要に応じてVenvのサンドボックスで参照できます.同様のcmake出力が表示されます.

  • python3-pyqt5.qtopengl - Qt + OpenGLを検出するために依存関係をもたらすのに十分です.なぜOpenGLはとても重要なので、あなたが尋ねることがありますか?ハードウェア加速フレームレート同様のcmake出力が表示されます.

  • ffmpeg + gstreamer - 別のビデオエンコーディングをロードする場合:

  • libfreetype-dev + libharfbuzz-dev - TrueTypeフォントのサポートが必要なら
  • CUDA + CuDNN - これはより詳細な説明に値する.
  • Cuda + Cudnn


    Cuda(およびCuDNn)は、通常同じディレクトリの下にインストールされます.そしてこのディレクトリは/usr/local/cuda-<version> . しかし、これは規則ではありません.私はPOPOSを使用してインストールされます/usr/lib/cuda-<version> . また、多くのバージョンをインストールすることもできます.

    Cuda - 11.2が自動的にインストールされていても、CuDNNは11.1までしか使えないので、Cuda - 11.1をインストールすることを強制されました.
    CmakeはCudaとCudnnを見つけるためにはすべてが必要です<your CUDA root>/bin あなたのパスに.
    次のようにチェックできます.

    超簡単右?🤣
    それでは、構築しましょう!

    依存関係のチェック


    コンパイルするには、Aを作成する必要がありますbuild OpenCvライブラリルートフォルダ内のフォルダcd opencv; mkdir build; cd build ).
    今は深呼吸して、1つのコマンドのために書いた最大のコマンドラインをお楽しみください.
    cmake -D CMAKE_CXX_COMPILER=/usr/bin/g++ \
    -D CUDA_HOST_COMPILER:FILEPATH=/usr/bin/gcc-9 \
    -D CUDA_NVCC_FLAGS=--expt-relaxed-constexpr \
    -D WITH_CUDA=ON \
    -D WITH_CUDNN=ON \
    -D CUDNN_INCLUDE_DIR=/usr/lib/cuda-11.1/include \
    -D OPENCV_DNN_CUDA=ON \
    -D ENABLE_FAST_MATH=1 \
    -D CUDA_FAST_MATH=1 \
    -D CUDA_ARCH_BIN=8.6 \
    -D WITH_CUBLAS=1 \
    -D WITH_TBB=ON \
    -D WITH_OPENMP=ON \
    -D WITH_IPP=ON \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D WITH_CSTRIPES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    -D CMAKE_INSTALL_PREFIX=/usr/local/ \
    -D WITH_QT=ON \
    -D WITH_OPENGL=ON \
    -D BUILD_EXAMPLES=OFF \
    -D BUILD_DOCS=OFF \
    -D BUILD_PERF_TESTS=OFF \
    -D BUILD_TESTS=OFF \
    -D BUILD_opencv_python3=ON \
    -D PYTHON3_EXECUTABLE=$(which python3) \
    -D PYTHON_INCLUDE_DIR=$(python2 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
    -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
    -D PYTHON3_LIBRARY=$(python3 -c "from distutils.sysconfig import get_config_var;from os.path import dirname,join ; print(join(dirname(get_config_var('LIBPC')),get_config_var('LDLIBRARY')))") \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") \
    -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
    ..
    
    最後にダブルドットをお見逃しなく!
    説明する価値のある構成:
  • CMAKE_CXX_COMPILER - C++ファイルをコンパイルするには
  • CUDA_HOST_COMPILER:FILEPATH - Cudaファイルをコンパイルするにはsystem76-cudnn パッケージのインストールは、GCC - 9をインストールしたことに気づいた.非常に決定的な(私は知っています).
  • CUDA_NVCC_FLAGS - 必要な日は、最終的に削除することがあります
  • CUDNN_INCLUDE_DIR - ホームフォルダをチェックしてください
  • CUDA_ARCH_BIN - GPUのアーキテクチャここでチェックhttps://developer.nvidia.com/cuda-gpus
  • OPENCV_EXTRA_MODULES_PATH - OpencvCount contribフォルダへの相対パスあるいは絶対パス
  • すべての依存関係がOKであるかどうかを検証するには、Unavailable: ... 前のセクションの冒頭で、あなたとの違いをチェックしてください.
    cmakeを再実行する必要がある場合はbuild フォルダは、それを破壊し、それを再現し、それに戻って、それからのみCmakeを再起動します.それは退屈なプロセスですが、残念ながらここでショートカットはありません.

    コンパイル


    このステップは最も簡単です.すべての依存関係が満たされていれば、makeコマンドを実行しなければなりません.
    make -j<number of processes>
    
    コンパイル時間を短縮するために- jフラグを使用することを強く推奨します.コンパイル中にマシンを使いたいなら、$(nproc)-2 .
    参考までに-j60 + NVME、コンパイルプロセスはここで5 M 30 sかかります.
    何かがうまくいかないならば、スクロールしてくださいerror: ) そして、何が起こったかチェックしてください.

    インストール


    万事うまくいくならダンディ

    💯% ベイビー!
    やらなければいけないことは
    sudo make install
    
    それはあなたがファイルを書くためにルートのスーパーパワーを呼び出す必要がある唯一の時間です/usr/local .

    妥当性検査


    あなたの業績をテストするには:
    $ python3
    >>> import cv2
    >>> print(cv2.getBuildInformation())
    
    cmakeの出力と同じ出力が表示されるはずです.

    使用


    Venvを使用してOpenCVを使用するには、以下のようにします.
    python -mvenv --system-site-packages venv 
    
    これは、サブフォルダvenv などの“システムワイドパッケージ”が付属してサンドボックス付き.あなたはそれを知っている.

    閉鎖


    あなたがここまで読むならば、Congrats🤣
    あなたがちょうどコメントを残す必要があるならば!
    グッドラック.