研究日誌

楽しくないことはしたくないなぁと本気で毎日思っている

OpenCV+cmake+Windows+Visual Studio 2022 with CUDA + NVCUVID

NVENCをOpenCVで使えるcv::cuda::cudacodecを利用可能なOpenCVのビルドに関するメモ.

 

opencv, opencv_contrib, NVIDIA CODEC SDK, CUDAを全部ダウンロードし,cmakeでconfigure -> generate,,,も,最初のConfigureでいくつか設定+α.

 

この目的で最低限必要なのは,

WITH_CUDA,

WITH_NVCUVID,

BUild_opencv_cudacodec,

BUILD_opencv_cudev

の4つのチェック.ただし,CUDA_nvcuvid_LIBRARYを指定しないと,Generate後のビルドで失敗する.このオプションはCMAKE-GUIのAdvancedにチェックを入れないと出てこない.

 

ここに指定すべきは,NVIDIA CODEC SDKをダウンロード,解凍後のフォルダ下にあるLib -> x64の中にある,nvcuvid.libのパスだが,手動で指定して,ConfigureしてもNot-foundと言われてしまう.

 

なので,このフォルダにある2つの.libファイル(nvcuvid.lib, nvencodeapi.lib)をCUDAのライブラリが入っているフォルダ,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64にコピーしてしまえば,勝手に見つけてくれる.

 

CUDA_nvcuvid_LIBRARYに正しくパスが振られていることを確認して,configure->generateでソリューションファイルができあがる.これは,コンパイラとしてVisual Studio 2022のC++コンパイラを指定した場合.

 

ninjaの方が早い記憶があったので,それをやろうと思ったが,CXXコンパイラに問題が!!!と言われてConfigureできず.わざわざMinGWを入れて,g++を使えるようにしたんだが,今度はCUDAをコンパイルしたいならVisual Studioで・・・とのメッセージがでたので詰み.原因が良くわからなかった.

 

OpenCV_contribを含めてALL_BUILDをReleaseモードでビルドして,3時間ぐらいでできあがったぽい.使用したのはIntel 12世代のCPUを載せたPCなので結構なスペック.