OpenCV+CUDA入门教程之一---概览

一、简介

CUDA是NVIDIA的并行计算库。OpenCV包含GPU(CUDA)模块,可以理解为一些OpenCV函数实现了CUDA版本,使用GPU加速,执行速度更快。

二、系列教程目录

三、一个简单的例子

在下面的示例中,读file.png,然后上传到GPU,阈值化,下载和显示。运行以下代码需要配置带有CUDA模块的OpenCV。

main.cpp(OpenCV3)

//main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/version.hpp>
#include <opencv2/cudaarithm.hpp>

int main (int argc, char* argv[])
{
    try
    {
        /// 读取图片
        cv::Mat src_host = cv::imread("file.png", cv::IMREAD_GRAYSCALE);
        /// 定义GpuMat
        cv::cuda::GpuMat dst, src;
        /// 将主机内存的图像数据上传到GPU内存
        src.upload(src_host);

        /// 调用GPU的阈值函数(很多使用GPU加速的函数都和CPU版本的函数相同)
        cv::cuda::threshold(src, dst, 120, 255, cv::THRESH_BINARY);

        cv::Mat result_host;
        /// 从GPU上下载阈值化完成的图片
        dst.download(result_host);

        /// 显示
        cv::imshow("Result", result_host);
        cv::waitKey();
    }
    catch(const cv::Exception& ex)
    {
        std::cout << "Error: " << ex.what() << std::endl;
    }
    return 0;
}

CMakeLists.txt 

cmake_minimum_required(VERSION 3.0)

project(OCSample)

set(CUDA_USE_STATIC_CUDA_RUNTIME ON) #这一句解决 cannot find -lopencv_dep_cudart
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})

find_package(CUDA REQUIRED)
message(STATUS "CUDA版本: ${CUDA_VERSION}")
message(STATUS "    头文件目录:${CUDA_INCLUDE_DIRS}")
message(STATUS "    库文件列表:${CUDA_LIBRARIES}")
set(CUDA_NVCC_FLAGS -G;-g;-std=c++11) # nvcc flags
include_directories(${CUDA_INCLUDE_DIRS})


set(OpenCV_DIR "/usr/local/opencv343-cuda90/share/OpenCV") # 指定OpenCV安装路径来区分不同的OpenCV版本
find_package(OpenCV REQUIRED)
set(OpenCV_LIB_DIR ${OpenCV_INSTALL_PATH}/lib)
message(STATUS "OpenCV版本: ${OpenCV_VERSION}")
message(STATUS "    头文件目录:${OpenCV_INCLUDE_DIRS}")
message(STATUS "    库文件目录:${OpenCV_LIB_DIR}")
message(STATUS "    库文件列表:${OpenCV_LIBS}")
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})


CUDA_ADD_EXECUTABLE(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS} ${CUDA_LIBRARIES})

 

四、参考

 

 

  • 8
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值