Windows10+vs2013+cuda9.1+opencv3.4.2 的安裝配置

本機安裝環境:

        筆記本:系統 windows10家庭中文版;顯卡:NVIDIA  GeForce 930 MX; VS 版本:2013 ;Opencv 版本:3.4.2;

安裝vs2013:

本機已安裝,不贅述;

安裝 cuda9.1:

      step 1:打開Nvidia 控制面板,查看顯卡支持的cuda版本:

                   點擊系統信息--組件:本機爲9.1.126,支持cuda9.1;

      step 2:去cuda官網下載對應版本的安裝程序,例本機如下選擇:

                     官網:https://developer.nvidia.com/cuda-toolkit-archive

                    選擇網絡版進行下載安裝:

 

      step 3:點擊下載的.exe進行安裝:

                    安裝路徑默認就可以,然後選擇自定義安裝,只安裝cuda:

 

 

                    點下一步,安裝完成;

step 4:配置環境變量:

             安裝結束後,打開屬性--高級系統設置--環境變量,能夠看到系統變量中多了CUDA_PATH和CUDA_PATH_V9_1兩個變量,然後在系統變量中添加以下變量:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0 
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64 
CUDA_BIN_PATH = %CUDA_PATH%\bin 
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64 
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64 

step 5:查看是否安裝成功:

打開cmd,輸入:nvcc -V;得到以下結果:

編譯opencv3.4.2:

step 1:在opencv 的github項目主頁上下載opencv的源碼,以及對應的contribt 庫,項目地址:https://github.com/opencv

step 2 : 下載CMake,最好爲CMake-gui版,操作界面比較簡單,添加source和build的路徑;

step 3:打開with cuda 選項,點擊configure,configure down後可以看到以下信息:

step 4:點擊generate,出現generate down 後,關閉Cmake;

step 5:進入build路徑下,用VS2013打開OpenCv工程項目,點擊生成--重新生成解決方案,等待編譯完成後,

右擊CMakeTargets下的INSTALL選擇僅用於項目選擇僅生成:

完成後在build路徑install\x64\v12\lib路徑下會生成以下庫***d.lib爲debug下生成的,***.lib爲release下生成的:

step 6  :添加環境變量:

在系統的環境變量中加入:build路徑下bin的路徑:

例:

E:\software\opencv342gpu\build\install\x64\vc12\bin

 

 

 

測試gpu:

新建一個vs2013工程,編寫測試代碼,驗證測試結果;

例,本次實現用gpu和cpu分別實現圖像的灰度轉化:

step 1:配置工程屬性:

包含目錄中加入頭文件路徑:

庫目錄:

鏈接器--輸入--附加依賴項,加入install生成的庫文件lib:

 

opencv_aruco342d.lib
opencv_bgsegm342d.lib
opencv_bioinspired342d.lib
opencv_calib3d342d.lib
opencv_ccalib342d.lib
opencv_core342d.lib
opencv_cudaarithm342d.lib
opencv_cudabgsegm342d.lib
opencv_cudacodec342d.lib
opencv_cudafeatures2d342d.lib
opencv_cudafilters342d.lib
opencv_cudaimgproc342d.lib
opencv_cudalegacy342d.lib
opencv_cudaobjdetect342d.lib
opencv_cudaoptflow342d.lib
opencv_cudastereo342d.lib
opencv_cudawarping342d.lib
opencv_cudev342d.lib
opencv_datasets342d.lib
opencv_dnn_objdetect342d.lib
opencv_dnn342d.lib
opencv_dpm342d.lib
opencv_face342d.lib
opencv_features2d342d.lib
opencv_flann342d.lib
opencv_fuzzy342d.lib
opencv_hdf342d.lib
opencv_hfs342d.lib
opencv_highgui342d.lib
opencv_img_hash342d.lib
opencv_imgcodecs342d.lib
opencv_imgproc342d.lib
opencv_line_descriptor342d.lib
opencv_ml342d.lib
opencv_objdetect342d.lib
opencv_optflow342d.lib
opencv_phase_unwrapping342d.lib
opencv_photo342d.lib
opencv_plot342d.lib
opencv_reg342d.lib
opencv_rgbd342d.lib
opencv_saliency342d.lib
opencv_shape342d.lib
opencv_stereo342d.lib
opencv_stitching342d.lib
opencv_structured_light342d.lib
opencv_superres342d.lib
opencv_surface_matching342d.lib
opencv_text342d.lib
opencv_tracking342d.lib
opencv_video342d.lib
opencv_videoio342d.lib
opencv_videostab342d.lib
opencv_xfeatures2d342d.lib
opencv_ximgproc342d.lib
opencv_xobjdetect342d.lib
opencv_xphoto342d.lib

 step 2 測試:

#include <iostream>
#include "opencv2/opencv.hpp"
#include <opencv2/core/cuda.hpp>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/imgproc.hpp>


using namespace std;
using namespace cv;

void test_cv_api(){

	int num_devices = cuda::getCudaEnabledDeviceCount();
	if (num_devices <= 0)
	{
		cerr << "There is no device" << endl;
		throw - 1;
	}
	int enable_device_id = -1;
	for (int i = 0; i < num_devices; i++)
	{
		cuda::DeviceInfo dev_info(i);
		if (dev_info.isCompatible())
		{
			enable_device_id = i;
		}
	}
	if (enable_device_id < 0)
	{
		cerr << "GPU module isn't built for GPU" << endl;
		throw - 1;
	}
	cuda::setDevice(enable_device_id);
	Mat src_img = imread("go.jpg");
	Mat dst_image_cpu;
	Mat dst_image_gpu;

	//cpu:
	cv::cvtColor(src_img, dst_image_cpu, CV_BGR2GRAY);

	//gpu:
	cuda::GpuMat d_src_img;
	d_src_img.upload(src_img);
	cuda::GpuMat d_dst_img;
	cuda::cvtColor(d_src_img, d_dst_img, CV_BGR2GRAY);
	d_dst_img.download(dst_image_gpu);

	//test_out
	imshow("cpu_gray", dst_image_cpu);
	waitKey(100);
	imshow("gpu_gray", dst_image_gpu);
	waitKey(100);
	system("Pause");
}



int main(){

	cout << "initialize gpu envoriment" << endl;
	test_cv_api();


}

結果:

 

 

至此安裝、編譯、測試完成。

參考文章:

【CUDA】CUDA9.0+VS2017+win10詳細配置:https://blog.csdn.net/u013165921/article/details/77891913

  OPENCV2.4.9+CUDA6.5+VS2013 64位系統環境搭建:https://blog.csdn.net/xuhang0910/article/details/45601035

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章