行业知识
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目录如下:
然后正常构建运行即可.