【发布时间】:2019-12-15 03:08:10
【问题描述】:
当我使用 cv::VideoCapture 从网络摄像头读取数据时,我的 gpu 显示 17% 的使用率,我不知道这是为什么。我一直认为这是纯粹的 CPU 问题。
我的系统是带有opencv 4.0的Win10。我尝试编译有和没有 cuda,都结束了。
这是我空闲时的 gpu 使用情况:
这是我从网络摄像头读取时的 gpu 使用情况:
这是代码:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0);
Mat img;
while (true)
{
cap.read(img);
}
}
谢谢!
【问题讨论】:
-
你有什么理由认为它会是 CPU 的事情?
-
OpenCV 的 Video Capture 类是围绕多个 3rd 方后端构建的,其中一些使用 GPU 加速进行编码/解码。
-
因为 GPU(“图形处理单元”)比 CPU 更擅长处理图形。是的,大多数视频传感器输出需要大量进一步处理才能被人类解释。
-
@ThomasJager 因为只使用了“3D”块,而“copy”、“encode”和“decode”显示没有使用,这通常意味着没有任何内容被复制到 gpu 内存并且没有解码/编码执行。我想知道gpu是否可以在不先复制到gpu内存的情况下处理任何东西。
-
@TheBarrometer 如屏幕截图所示,“encode”和“decode”块没有使用,所以我不确定是不是这样。
标签: c++ opencv gpu video-capture