我不是C++、OpenCV和CUDA的专业人士,不明白为什么
cv::gpu::warpPerspective(g_mask, g_frame, warp_matrix, g_frame.size(),
cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(255,255,255));
cv::gpu::GaussianBlur(g_frame, g_frame, cv::Size(blur_radius, blur_radius), 0);
g_frame.download(mask);
比慢
cv::gpu::warpPerspective(g_mask, g_frame, warp_matrix, g_frame.size(),
cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(255,255,255));
g_frame.download(mask);
cv::GaussianBlur(mask, mask, cv::Size(blur_radius, blur_radius), 0);
告诉我,为什么会发生这种事?或者我写错了代码?
GPU的IPC开销通常是罪魁祸首。您应该考虑使用cv::Stream接口来最大限度地减少开销。