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なので結構なスペック.