我想要利用opencv對視頻中的每一幀進行處理,希望通過gpu進行加速。為了減少cpu到gpu的傳輸時間我希望直接通過gpu解碼視頻,因此我想使用cv::cudacodec::VideoReader,我重新編譯了WITH_CUDA,WITH_OPENGL的opencv庫,但還是無法正常使用cv::cudacodec::VideoReader,希望能夠獲得你們的幫助。我想運行如下一個demo
int main(int argc, char** argv)
{
if (argc != 2)
return -1;
cv::namedWindow("GPU", cv::WINDOW_OPENGL);
cv::cuda::setGlDevice();
cv::cuda::GpuMat d_frame;
cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(std::string(argv[1]));
while (true)
{
if (!d_reader->nextFrame(d_frame))
break;
cv::imshow("GPU", d_frame);
if (cv::waitKey(3) > 0)
break;
}
return 0;
}
注:
我嘗試了加入了,英偉達的視頻解碼模塊進行編譯,結果在顯卡為MX250的機器上createVideoReader報錯了,我猜想是因為該型號顯卡不支持硬解碼的原因造成的,于是在另一臺GTX1050ti的機器上再進行了測驗,結果createVideoReader成功讀取到了視頻,但是d_reader->nextFrame(d_frame)處卻報錯了。我已無計可施。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/284076.html
標籤:OpenCV
下一篇:請各位大佬看一下
