小工具知识网

当前位置: 首页 > 行业知识 > CUDA学习笔记05:卷积(sobel)

行业知识

CUDA学习笔记05:卷积(sobel)

2026-11-06 09:07:26 来源:互联网转载

参考资料

CUDindex.php/tags-41973.html" >A编程模型系列四(卷积 or sobel边缘检测)_哔哩哔哩_bilibili

强推 ! !

代码片段

主函数:

#include #include #include #include #include #include // using namespace cv;using namespace std;__global__ void sobel_gpu(unsigned char* in, unsigned char* out,                          const int Height, const int Width){    int x = threadIdx.x + blockDim.x * blockIdx.x;    int y = threadIdx.y + blockDim.y * blockIdx.y;    int index = y * Width + x;    unsigned char x0, x1, x2, x3, x4, x5, x6, x7, x8;    int Gx = 0, Gy = 0;    if(x > 0 && x  0 && y  

用到了OpenCV,自己下载编译一下,然后链接进来即可,我一般习惯性建立3rdparty,然后将依赖的库都放在这里。CMakeLists.txt这样写即可:

cmake_minimum_required(VERSION 3.10)project(CSobel LANGUAGES CXX CUDA)add_definitions(-std=c++11)option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)set(CMAKE_CXX_STANDARD 11)set(CMAKE_CUDA_STANDARD 11)set(CMAKE_BUILD_TYPE Debug)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -O0 -Wfatal-errors -pthread -w -g")set(OpenCV_DIR ${PROJECT_SOURCE_DIR}/../../3rdparty/opencv3.4.15)find_package(CUDA REQUIRED)include_directories(    ${PROJECT_SOURCE_DIR}    ${OpenCV_DIR}/include)link_directories(    ${PROJECT_SOURCE_DIR}/lib    ${OpenCV_DIR}/lib)cuda_add_executable(sobel_cuda main.cu)target_link_libraries(sobel_cuda opencv_world)

我的OpenCV目录如下:

然后正常构建运行即可.

上一篇:怎么设计微商城?

下一篇:java版本使用springboot vue websocket webrtc实现视频通话