LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか
エムportuguês .
OpenCVは図書館の獣です.それは巨大です.しかし、それはまた、超柔軟です.通常、あなたのバイナリがオプションの依存関係を提供することによって含まれますが、時には必要な方向にそれをかたくなければならないものを選択します.
このガイドでは、私があなたがこれまでに見られる最も長いcmakeラインでそれをコンパイルする方法をあなたに教えます.
始めましょう.
ダウンロード
Cuda(およびCuDNn)は、通常同じディレクトリの下にインストールされます.そしてこのディレクトリは
Cuda - 11.2が自動的にインストールされていても、CuDNNは11.1までしか使えないので、Cuda - 11.1をインストールすることを強制されました.
CmakeはCudaとCudnnを見つけるためにはすべてが必要です
次のようにチェックできます.
超簡単右?🤣
それでは、構築しましょう!
依存関係のチェック
すべての依存関係がOKであるかどうかを検証するには、
cmakeを再実行する必要がある場合は
コンパイル
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
これはあなたが必要とするものです.
すべての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 -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フォルダへの相対パスあるいは絶対パス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🤣
あなたがちょうどコメントを残す必要があるならば!
グッドラック.
Reference
この問題について(LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか), 我々は、より多くの情報をここで見つけました
https://dev.to/moniquelive/how-i-compile-opencv-on-linux-with-lots-of-bells-and-whistles-cudnn-cuda-opengl-qt-truetype-video-codecs-3hmo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
make -j<number of processes>
万事うまくいくならダンディ
💯% ベイビー!
やらなければいけないことは
sudo make install
それはあなたがファイルを書くためにルートのスーパーパワーを呼び出す必要がある唯一の時間です/usr/local
.妥当性検査
あなたの業績をテストするには:
$ python3
>>> import cv2
>>> print(cv2.getBuildInformation())
cmakeの出力と同じ出力が表示されるはずです.
使用
Venvを使用してOpenCVを使用するには、以下のようにします.
python -mvenv --system-site-packages venv
これは、サブフォルダvenv
などの“システムワイドパッケージ”が付属してサンドボックス付き.あなたはそれを知っている.
閉鎖
あなたがここまで読むならば、Congrats🤣
あなたがちょうどコメントを残す必要があるならば!
グッドラック.
Reference
この問題について(LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか), 我々は、より多くの情報をここで見つけました
https://dev.to/moniquelive/how-i-compile-opencv-on-linux-with-lots-of-bells-and-whistles-cudnn-cuda-opengl-qt-truetype-video-codecs-3hmo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
$ python3
>>> import cv2
>>> print(cv2.getBuildInformation())
Venvを使用してOpenCVを使用するには、以下のようにします.
python -mvenv --system-site-packages venv
これは、サブフォルダvenv
などの“システムワイドパッケージ”が付属してサンドボックス付き.あなたはそれを知っている.閉鎖
あなたがここまで読むならば、Congrats🤣
あなたがちょうどコメントを残す必要があるならば!
グッドラック.
Reference
この問題について(LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか), 我々は、より多くの情報をここで見つけました
https://dev.to/moniquelive/how-i-compile-opencv-on-linux-with-lots-of-bells-and-whistles-cudnn-cuda-opengl-qt-truetype-video-codecs-3hmo
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(LinuxでOpenCVをコンパイルするにはどうすればいいのでしょうか), 我々は、より多くの情報をここで見つけました https://dev.to/moniquelive/how-i-compile-opencv-on-linux-with-lots-of-bells-and-whistles-cudnn-cuda-opengl-qt-truetype-video-codecs-3hmoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol