admin 管理员组

文章数量: 1088111

很久之前在windows7 32位上配置过GPU版的opencv,可参考http://blog.csdn/fengbingchun/article/details/9831837

Windows7 64位CUDA7.5的配置可以参考:http://blog.csdn/fengbingchun/article/details/53892997这里是在CUDA7.5已正确安装后的操作步骤:

1.      从https://github/opencv/opencv/releases下载opencv-2.4.13.exe,并解压缩;

2.      打开cmake-gui:如图


(1)、勾选:CUDA_FAST_MATH、WITH_CUBLAS、WITH_CUDA、WITH_CUFFT、WITH_NVCUVID

(2)、指定CUDA正确路径:CUDA_TOOLKIT_ROOT_DIR:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5;CUDA_GENERATION: Auto

(3)、如果想缩短编译的时间:可以去掉BUILD_EXAMPLES的勾选;对CUDA_ARCH_BIN的值进行设置,默认会有2.0 /2.1(2.0)/3.0/3.5,只设置其中一个;

(4)、依次点击Configure和Generate按钮,会在D:\soft\OpenCV2.4.13\vs2013_cuda_dll目录下生成OpenCV.sln工程,如下图:


3.      打开OpenCV.sln工程:

(1)、分别在Release和Debug下,选中工程解决方案’OpenCV’,点击重新生成解决方案;

(2)、在编译过程中会弹出对话框(检测到文件修改),如下图,点击全部重新加载;


(3)、编译完后,依次点击CMakeTargets,INSTALL,生成

(4)、将D:\soft\OpenCV2.4.13\vs2013_cuda_dll\install\x64\vc12\bin添加到系统环境变量中,重启系统;

4.      新建一个控制台工程,验证GPU版OpenCV库的正确性,测试代码如下:

#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/gpu/gpu.hpp> 

int main()
{
	int device_num = cv::gpu::getCudaEnabledDeviceCount();
	fprintf(stdout, "device count: %d\n", device_num);

	std::string image_name = "D:/soft/OpenCV2.4.13/opencv/sources/doc/tutorials/introduction/clojure_dev_intro/images/lena.png";
	cv::Mat mat = cv::imread(image_name, 1);
	if (!mat.data) {
		fprintf(stderr, "read image fail\n");
		return -1;
	}

	cv::gpu::GpuMat src(mat);
	int width = src.cols;
	int height = src.rows;
	int channels = src.channels();
	fprintf(stdout, "image width: %d, height: %d, channels: %d\n", width, height, channels);

	cv::gpu::GpuMat dst;
	cv::gpu::resize(src, dst, cv::Size(300, 400), 0.0, 0.0, 1);

	cv::Mat mat2(dst);
	cv::imwrite("resize.jpg", mat2);

	return 0;
}

执行结果如下,一切正常:



另:在windows10上编译OpenCV2.4.13+CUDA8.0的步骤与上面操作步骤相似,只需修改的是:

(1)、为了加快编译速度,去掉BUILD_DOCS、BUILD_EXAMPLES、BUILD_PERF_TESTS、BUILD_TESTS、BUILD_opencv_world的勾选;

(2)、windows10,显卡为NVIDIA GeForce 940MX的设备对于opencv2.4.13不支持2.1,因此此时需要在CUDA_ARCH_BIN中去掉2.0和2.1,并且CUDA_GENERATION不能选择为Auto,而是默认什么都不选,操作结果分别如下图:



本文标签: 机上 操作步骤 GPU