【发布时间】:2020-11-17 15:36:22
【问题描述】:
我可以使用 OpenCV 的 VideoReader class 通过其路径解码 IP 摄像机流或任何视频文件。此解码过程按预期使用GPU,到目前为止没有问题。这是运行良好并使用 GPU 进行解码的简单代码:
int main()
{
const std::string fname("rtsp://user:pwd@192.168.1.108");
// const std::string fname("/path/to/video/file.mp4"); // this also works
cv::cuda::GpuMat d_frame;
cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);
Mat frame;
for (;;)
{
if (!d_reader->nextFrame(d_frame))
break;
Mat myMat(d_frame);
cv::imshow("GPU", myMat);
if (cv::waitKey(3) > 0)
break;
}
return 0;
}
我想像 VideoCapture(0) 一样使用 GPU 从我的网络摄像头捕获流。我知道@berak 提到了here:VideoCapture 没有办法做到这一点
我的问题是:
1 - 是否可以使用带有 VideoReader 类的 GPU 进行流式传输?因为 VideoReader 类只接受字符串而不接受索引。
2- 使用 GPU 进行流式传输的其他方法有哪些?
【问题讨论】:
标签: c++ opencv video-streaming gpu webcam