【cuda】——cuda,opencv混合编程

2023-11-06

思路来自:https://www.cnblogs.com/dwdxdy/p/3528711.html

但是其cuda源码是有问题的,没有cmakelists.txt

背景
采用cuda gpu交换opencv图像的 r, b通道

0. 代码

main.cpp

#include <stdlib.h>
#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv2/opencv.hpp>

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

using namespace cv;


extern "C" void swap_rb_caller(const uchar3* src,uchar3* dst,int width,int height);
 
int main()
{
    Mat image = imread("lena_1.jpg");
    imshow("src",image);
    
    size_t memSize1 = image.cols*image.rows*sizeof(uchar3);
    int memSize = image.step * image.rows;
    uchar3* d_src = NULL;
    uchar3* d_dst = NULL;
    cudaMalloc((void**)&d_src,memSize);
    cudaMalloc((void**)&d_dst,memSize);
    cudaMemcpy(d_src,image.data,memSize,cudaMemcpyHostToDevice);
    
    swap_rb_caller(d_src, d_dst, image.cols, image.rows);
    
    cudaMemcpy(image.data,d_dst,memSize,cudaMemcpyDeviceToHost);
    imshow("gpu",image);
    waitKey(0);
    
    cudaFree(d_src);
    cudaFree(d_dst);
    return 0;
}

kernel.cu

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

__global__ void swap_rb_kernel(const uchar3* src,uchar3* dst,int width,int height)
{
    int x = threadIdx.x + blockIdx.x * blockDim.x;
    int y = threadIdx.y + blockIdx.y * blockDim.y;
    
    if(x < width && y < height)
    {
        uchar3 v = src[y * width + x];
        dst[y * width + x].x = v.z;
        dst[y * width + x].y = v.y;
        dst[y * width + x].z = v.x;
    }
}

extern "C"
void swap_rb_caller(const uchar3* src,uchar3* dst,int width,int height)
{
    dim3 block(32,32);
    dim3 grid((width + block.x - 1)/block.x, (height + block.y - 1)/block.y);
    
    swap_rb_kernel<<<grid,block,0>>>(src, dst, width, height);

    cudaDeviceSynchronize();
}

cmakelists.txt

cmake_minimum_required(VERSION 2.8.0)
project(demo)

set(CMAKE_BUILD_TYPE Debug)
# OPENCV
find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

find_package(CUDA REQUIRED)

CUDA_ADD_EXECUTABLE(demo main.cpp kernel.cu)
target_link_libraries(demo ${OpenCV_LIBS})

项目下载地址:CSDN

没有积分的,留下邮箱,后续发送

1. 结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【cuda】——cuda,opencv混合编程 的相关文章

  • 来自连接到远程机器的相机的 Opencv 流

    我正在用 python 开发一个 wx 应用程序 用于流式传输和显示来自两个不同网络摄像头的视频 这工作正常 但现在我需要在不同的场景中执行此操作 其中两个摄像头连接在通过网络连接的 Windows 上运行的单独计算机中 我的应用程序将在机
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • OpenCV 2.3 与 VS 2008 - 鼠标事件

    强制性 我是新手 有一份涉及编程的工作 并且我一边工作一边自学 不用说 作为一名老师 我经常犯彻底的错误 我现在所处的位置 我创建了 Graph 类 它 令人惊讶的是 制作了图表 但现在我想通过单击鼠标来修改图形 但我似乎无法让鼠标处理程序
  • 从图像坐标获取对象的世界坐标

    I have been following this http docs opencv org modules calib3d doc camera calibration and 3d reconstruction html docume
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 使用 OpenCV 和/或 Numpy 对两个图像进行 Alpha 混合 [重复]

    这个问题在这里已经有答案了 我想将一个填充纯色的半透明矩形添加到已加载的半透明 PNG 中 这是我正在使用的输入图像示例 该图像加载了标准cv2 IMREAD UNCHANGED标志 以便完美保留 alpha 通道 该输入图像存储在imag
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 使用 OpenCV 改进特征点匹配

    我想匹配立体图像中的特征点 我已经用不同的算法找到并提取了特征点 现在我需要一个良好的匹配 在本例中 我使用 FAST 算法进行检测和提取 BruteForceMatcher用于匹配特征点 匹配代码 vector lt vector
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • OpenCV Mat 和 Leptonica Pix 之间的转换

    我需要在 C 中在 OpenCV Mat 图像和 Leptonica Pix 图像格式之间进行转换 这用于 8 位灰度图像的二值化 我发现发现了 ikaliga的回答 https stackoverflow com a 25929320 2
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是
  • 是否可以在 PyScript 中使用 OpenCV 模块?

    我想使用 opencv 模块 但无法导入 OpenCV 那么我该如何解决这个问题呢 顺便说一句 Pyodide 支持 OpenCV 示例代码 https i stack imgur com ahwex jpg 尚不支持 OpenCV 此时O
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 最小化 MC 模拟期间存储的 cuRAND 状态数量

    我目前正在 CUDA 中编写蒙特卡罗模拟 因此 我需要生成lots使用随机数cuRAND图书馆 每个线程处理一个巨大的元素floatarray 示例中省略 并在每次内核调用时生成 1 或 2 个随机数 通常的方法 参见下面的示例 似乎是为每
  • OpenCV 2.2 和多 CPU - opencv_haartraining.exe 是多线程的吗?

    我在 VS 2010 上构建了 OpenCV 2 2 启用了 TBB 3 支持 我确保所有项目都有正确的 tbb lib 目录 并将 tbb lib 列为依赖项 通过隐藏 tbb dll 进行验证 果然 haartraining exe 抱
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5

随机推荐

  • Python int()的有趣用法

    Python中的int 函数相信大家都不陌生 总的来说 就是int 函数用于将字符串或数字转换为整型 那么今天要说的有趣用法是什么呢 先看一行代码 并猜一下它有什么作用 int 1 200 2 初看这行代码想半天也没搞懂 于是help in
  • 2014年12月4日星期四(DEMO10-2地形生成函数)

    转眼间 2014年快过去了 数了数代码 封装后的代码也有17000行了 但是 还有很多工作量 继续进行最为敬畏的地形生成 这个DEMO的意思是说 加载256色位图 以位图颜色索引乘以一个缩放因子为高程 将每个单元格分割为三角形 并插入到物体
  • 西瓜书《机器学习》课后答案——chapter5_5.5

    网络结构 这里采用简单的单隐层神经网络 输入层有2个神经元 隐层有4个神经元 输出层有2个神经元 隐层采用sigmoid激活函数 输出层采用softmax激活函数 z1 W1x b1 boldsymbol z 1 W 1 boldsymbo
  • Flutter之自动更新(自带源码 包看包会)

    Flutter做的App怎么自动更新呢 首先要用到两个依赖一个叫update app 另外一个叫package info 还有一个叫Dio 一个是用来下载App的 一个是用来获取当前App的版本信息的 一个是用来网络链接的 flutter
  • axure能做剪切蒙版吗_Axure图片裁切功能

    平时做原型时经常会用到一张图片的某些部分 这时候我们一般都会借助于其他图片处理工具先处理好 再导入到原型中 其实Axure有简单的图片裁切功能 基本可以满足我们大部分的需求 下面介绍一下 使用axure7 1 图片裁割 通过该功能可以把图片
  • C++ 中 enable_shared_from_this 的使用总结

    背景 enable shared from this 是 C 11 定义在头文件 include 中的一个模板类 其作用是在类的内部安全的得到 this 指针的 shared ptr 版本 获取 this 的 shared ptr 版本 概
  • 文件的blob、base64、File的转化

    前言 blob base64 File的互转 base64 File function toFile ndata ndata为base64格式地址 let arr ndata split mime arr 0 match 1 bstr at
  • DALL-E-2 论文水记

    DALL E 2 论文水记 模型示意图 虚线上面是 CLIP 的训练流程 虚线下面是文字生成图像的流程 我们有一个 prior 模型和一个 decode 模型 先把 text embeding 输入 prior 模型 得到 image em
  • How to run Android apps in tablet mode on your phone

    转自 http www littlegreenrobot co uk tutorials how to run android apps in tablet mode on your phone How to run Android app
  • 2.6内核的通用的编译步骤

    2 6内核的通用的编译步骤 1 下载源码并解压 虽然我们可以将内核源码存放在任何自己找得到的地方 但通常还是会将内核源码下载到 usr src目录并解压 cd usr src wget ftp kernel org pub linux ke
  • Android——AVD无法启动解决方法

    起因 最近安装了Android Studio开始瞎捣鼓 安装的时候配置的是自带的Android Virtual Device AVD 然后想在虚拟机上跑以下demo 发现虚拟机怎么都启动不了 起初我以为是系统找不到我的虚拟机的位置导致 因为
  • C# 说说lock

    一 MSDN的定义 lock 语句获取给定对象的互斥 lock 执行语句块 然后释放 lock 持有 lock 时 持有 lock 的线程可以再次获取并释放 lock 阻止任何其他线程获取 lock 并等待释放 lock lock 关键字可
  • 基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

    目录 前言 总体设计 系统整体结构图 系统流程图 孪生神经网络结构图 运行环境 Python 环境 TensorFlow 环境 模块实现 1 数据预处理 2 创建模型并编译 3 模型训练及保存 4 模型应用 系统测试 1 训练准确率 2 测
  • 软件测试管理方法(十一)——软件评审

    0 基本概念 工作 产品指软生命周期中各种产出物 包括各种文档 代码等 1 目的 从多方角度检查和评估每个阶段工作产品的合格情况 确保每个阶段的产出都是符合既定要求的 从而减少软件开发周期 包括项目周期 的返工现象 静态地测试程序中可能存在
  • LInux 锂电池驱动分析

    锂电池的驱动程序要实现以 下五个功能 1 可以自动检测到当前给电 池充电的是USB还 是AC 2 组织过大的充电电流 3 坏电池检测 4 死亡温度的检测 5 电池电压的测量 当我们要写一个锂 电池的驱动程序 的时候 首先 要知道内核提 供给
  • SpringBoot+Shiro实现免密登录

    1 自定义登录认证规则 import org apache shiro authc UsernamePasswordToken public class EasyUsernameToken extends UsernamePasswordT
  • DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之一

    本文均属自己阅读源码的点滴总结 转账请注明出处谢谢 欢迎和大家交流 qq 1037701636 email 200803090209 zjut com gzzaigcn2012 gmail com 在这里分析驱动的ioctl的内容时 需要结
  • Feature Pyramid Networks for Object Detection 论文笔记

    论文地址 Feature Pyramid Networks for Object Detection 前言 这篇论文主要使用特征金字塔网络来融合多层特征 改进了CNN特征提取 论文在Fast Faster R CNN上进行了实验 在COCO
  • 本地jar包上传的maven仓库,引用jar包中的pom依赖无法下载

    新项目开发公共组件 上传到公司maven仓库 记一次本地项目打包 上传到公司maven仓库的坑 mvn deploy deploy file DgroupId com test 分组 DartifactId test jar名称 Dvers
  • 【cuda】——cuda,opencv混合编程

    思路来自 https www cnblogs com dwdxdy p 3528711 html 但是其cuda源码是有问题的 没有cmakelists txt 背景 采用cuda gpu交换opencv图像的 r b通道 0 代码 mai