GPU:GeForce GTX 750
OpenCV的GPU模糊缓慢
CPU:Intel i5-4440 3.10 GHz
下面是一个简单的C++代码,我跑。
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2\gpu\gpu.hpp"
int main(int argc, char** argv) {
cv::Mat img0 = cv::imread("IMG_0984.jpg", CV_LOAD_IMAGE_GRAYSCALE); // Size 3264 x 2448
cv::Mat img0Blurred;
cv::gpu::GpuMat gpuImg0(img0);
cv::gpu::GpuMat gpuImage0Blurred;
int64 tickCount;
for (int i = 0; i < 5; i++)
{
tickCount = cv::getTickCount();
cv::blur(img0, img0Blurred, cv::Size(7, 7));
std::cout << "CPU Blur " << (cv::getTickCount() - tickCount)/cv::getTickFrequency() << std::endl;
tickCount = cv::getTickCount();
cv::gpu::blur(gpuImg0, gpuImage0Blurred, cv::Size(7, 7));
std::cout << "GPU Blur " << (cv::getTickCount() - tickCount)/cv::getTickFrequency() << std::endl;
}
cv::gpu::DeviceInfo deviceInfo;
std::cout << "Device Info: "<< deviceInfo.name() << std::endl;
std::cin.get();
return 0;
}
而作为一个结果,我通常得到的东西是这样的:
CPU Blur: 0.01
GPU Blur: 1.7
CPU Blur: 0.009
GPU Blur: 0.012
CPU Blur: 0.009
GPU Blur: 0.013
CPU Blur: 0.01
GPU Blur: 0.012
CPU Blur: 0.009
GPU Blur: 0.013
Device Info: GeForce GTX 750
所以在GPU第一操作需要一定的时间。
但是,GPU的其他部分怎么样呢?
为什么GPU不提供任何加速度。毕竟这是一个很大的图像(3264 x 2448)。并行任务很好,不是吗?
我的CPU很好,还是我的GPU不好? 或者这是组件之间的某种通信问题?
[相关](http://stackoverflow.com/questions/15035907/why-cvgpugaussianblur-is-slower-than-cvgaussianblur) –
你使用opencv与IPP? – Micka
不,我没有..... – ancajic