見出し画像

GPU(CUDA)を有効にしたOpenCVのインストール方法


1.本記事の概要

 NVIDIA GPUはハードウェアベースのデコーダー(NVDEC)とエンコーダー(NVENC)を提供しており、これらを用いることでより高速にリアルタイムのビデオ処理を実行することができます。これはデコード/エンコードをCPUではなく、GPUで実行する操作になります。使用手順としては、GPU(CUDA)を有効にしたOpenCVをビルドして、OpenCVのcudacodecを用いることでこのハードウェアベースのデコーダーとエンコーダーを実装することができます。
 本記事ではいくつかの記事を参照しながら、GPU(CUDA)を有効にしたOpenCVをビルドする方法を紹介します。

2.NVIDIA Video Codec SDKのセット

 今回、ハードウェアベースのデコーダー(NVDEC)とエンコーダー(NVENC)の機能を使用するのに以下のリンクのNVIDIA Video Codec SDKを用います。

以下のページからNVIDIA Video Codec SDKを取得することができます。

上記で取得したSDKを展開して、以下のようにCUDAのディレクトリに格納します。マシンではcuda-11.6を使用しているので、本記事ではcuda-11.6としています。

3.FFmpegのビルド

 以下の記事の手順に従って、FFmpegをビルドします。マシンではcuda-11.6を使用しているので、本記事ではcuda-11.6としています。

具体的なビルドコマンドは以下のページに記載されています。CUDAのバージョンによってページが異なりますのでで、注意してください。

以下では、Linuxでのビルド方法を示します。
まずはffnvcodecをクローン

$ git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

ffnvcodecをインストール

$ cd nv-codec-headers && sudo make install
$ cd ..

FFmpegのGitリポジトリをクローン

$ git clone https://git.ffmpeg.org/ffmpeg.git
$ cd ffmpeg

必要なパッケージをインストール

$ sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev

設定(Configure)

$ ./configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared

コンパイル、ライブラリのインストール

$ make -j 8
$ sudo make install

まとめると下記です。

# Install ffnvcodec
$ git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
$ cd nv-codec-headers && sudo make install cd ..

# Install FFmpeg
$ git clone https://git.ffmpeg.org/ffmpeg.git
$ cd ffmpeg
$ sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev
$ ./configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda-11.6/include --extra-ldflags=-L/usr/local/cuda-11.6/lib64 --disable-static --enable-shared
$ make -j 8
$ sudo make install
$ sudo ldconfig

4.OpenCVのビルド

以下のコマンドでビルドします。

ここから先は

904字

¥ 300

この記事が気に入ったらサポートをしてみませんか?