Opencv中支持GPU加速的函数 opencv gpu加速_OpenCV


OpenCV要使用GPU加速需要重新编译OpenCV。本人编译环境:win10 X64 vs2013 编译opencv-3.4.2 + contrib-3.4.2 + cuda10.0

一、环境和资源准备

1、计算机必须有支持CUDA 的NVIDIA GPU,并且装好了驱动程序。
安装CUDA toolkit,本文使用的是CUDA10.0。下载地址:https://developer.nvidia.com/cuda-downloads;

2、下载opencv-3.4.2,下载地址: http://opencv.org/releases.html 下载3.4.2 win pack版本;
3、下载opencv-contirb-3.4.2,下载地址:https://github.com/opencv/opencv_contrib/releases下载3.4.2的zip文件;
4、下载Eigen ,Eigen是用来库优化矩阵的计算的。下载地址:http://eigen.tuxfamily.org/index.php?title=Main_Page;下载最近的稳定版本即可,这里使用的是eigen-3.3.6
5、下载tbb,Intel TBB是用来优化OpenCV库函数的多核计算性能的。下载地址:https://github.com/01org/tbb/releases;我下载的是tbb2018_20180312oss_win.zip
6、下载cmake-3.17.1-win64-x64.msi安装,下载地址:https://cmake.org/download/ 二、Cmake前准备工作
1、在我的电脑右键–》属性–》高级系统设置–》环境变量–》在系统变量的Path值中加入tbb的bin目录: 我的是: D:Librarytbb2018_20180312ossbinintel64vc12;
2、设置vs2013 x64的环境变量:在开始–》所有程序–》vs2015–》vs2015 x64 本机工具命令提示符输入命令 vcvars64.bat

三、Cmake工程配置
1、打开CMAKE,输入OpenCV的sources路径,以及将要编译的结果路径(自主创建一个文件夹),勾选择Grouped选项和Advanced选项。

2、选择编译器:选择Studio 2013 Win64,默认Use defualt native complers。
3、WITH栏配置:选中WITH_CUDA,WITH_CUBLAS,从而可以使用cuBLAS,选中WITH_EIGN,WITH_TBB。
4、点击Configure,添加目录:OPENCV_EXTRRA_MODULES_PATH: ~/opencv_contrib-3.4.2/modules

EIGEN_INCLUDE_PATH:~/ eigen-eigen-b70bf4fad467

TBB_ENV_iNCLUDE: ~/tbb2018_20180312oss/include
TBB_ENV_LIB: ~/Library/tbb2018_20180312oss/lib/intel64/vc12/tbb.lib
TBB_ENV_LIB_DEBUG: ~/Library/tbb2018_20180312oss/lib/intel64/vc12/tbb_debug.lib
TBB_VER_FILE: ~/Library/tbb2018_20180312oss/include/tbb/tbb_stddef.h
注意已上的“~”都要落实到自己的文件目录下,根据解压的位置选择。
点击Configure,如果还出现红色提示,再点击configure就行,直到没有红色的警告出现为止。
5、点击Generate,CMake就完成了。

四、VS2013编译

1、用Vs2013打开OpenCV.sln,等待项目加载就绪完成。
2、点击菜单栏中的生成,批生成。
3、选中ALL_BUILD中debug和release两个选框,以及INSTALL中的debug和release两个选框,一次性生成debug和release版本,省的debug和release两个版本分开编译。
4、等待编译完成,编译需要花费大量时间,看个人配置,一般4-8小时之间,完成之后在build路径下面会有install文件夹,将D:OpenCV_Buildinstallx64vc12bin添加到path环境变量中。

五、测试编译的OpenCV是否可用

1、新建一个空的控制台程序,配置include路径,配置lib路径,注意在这里都要选择你自己编译完的路径。在Linker->Input 中需要导入新编译好的lib,小窍门是找到刚刚生成lib的文件夹,先在搜索框中过滤*d.lib,把debug版本的lib复制到一个文件夹中,再按住shift+右键,选择在此处打开命令行窗口,输入
dir /b > debug.txt
然后在配置的debug环境中,粘贴复制即可。release环境配置类似操作即可。

2、在main函数的文件中添加下面代码,运行成功,则说明环境搭配完成:


#include <iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/cudaarithm.hpp>
#include<opencv2/cudafilters.hpp>
#include<opencv2/cudaimgproc.hpp>
usingnamespacestd;
usingnamespacecv;
intmain(intargc,char*argv[])
{
try{
        cv::Mat src_host= cv::imread("D:testtest.jpg", CV_LOAD_IMAGE_GRAYSCALE);//这里使用自己的测试图片cv::cuda::GpuMat dst, src;
        src.upload(src_host);        
        cv::cuda::threshold(src, dst,128.0,255.0, CV_THRESH_BINARY);
        cv::Mat result_host;
        dst.download(result_host);
        cv::imshow("Result", result_host);
        cv::waitKey();
    }catch(constcv::Exception&ex)
    {
        std::cout<<"Error:"<< ex.what() <<std::endl;
    }
    std::cin.get();return0;
}


最后

如果觉得文章对您有帮助的话,别忘了给我个赞,谢谢!