

高解像度での動画処理のためopencv 4.1にてcv::cudacodec::createVideoReaderを利用したく  
cuda有効なopencvを配置したのですが、動作させることができません。

[code]

    std::string fname("C:/Users/****/***/****.avi");
    cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);
    
[/code]

を実行すると

[code]

    0x0000********** で例外がスローされました (Opencvcudatest.exe 内): 
    Microsoft C++ の例外: cv::Exception (メモリの場所 0x000000*********)。
    
[/code]

というエラーが出てしまいます。

GPUMATをつかったjpeg画像の処理はできており、cudaの機能のインストールは見かけ上かもしれませんが成功しています。opencvはVS2019でbuildしています。コーデックのインストールも別途で必要かと考えましたが、方法もわからず、いくつかのwebサイトを見てもそういった記述もなく、投稿させていただきました。知見のある方がいらっしゃいましたら宜しくお願い致します。

環境としては  
Windows 10 home 64bit  
CPU Intel i7-8750H  
GPU RTX2070 note (driver 26.21.14.4274)  
cuda 10.1  
opencv 4.1  
Visual studio 2019 C++

となっております。


CC BY-SA 4.0
2020-03-26T21:00:47.933
64140
2022-11-17T07:06:00.723
38378
question
opencv cuda
OpenCV4.1.0 cv::cudacodec::createVideoReader にてエラー


参考までに回答します。  
cv::cudacodec::createVideoReaderを利用するには、NVIDIA VIDEO CODEC SDKが必要です。  
NVIDIAのホームページからダウンロードして展開したファイルをCUDA10.1のインストールフォルダにコピーします。  
その後、CMakeオプションのWITH_NVCUVIDをONにしてOpenCVライブラリをビルドします。  
ビルドすることでcudacodec関連処理が取り込まれるのでオプションに変更がなくてもビルドは必要です。  
これで準備完了。

あとはcuda.lib,nvcuvid.libをリンクしてあげれば実行できました。


CC BY-SA 4.0
2020-09-15T12:38:16.250
70412
2020-09-15T12:38:16.250
41919
64140
answer