cuda_opencv 矩阵相加
实现矩阵相加
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <opencv/cv.h> 4 #include <opencv/highgui.h> 5 #include <opencv2/opencv.hpp> 6 7 #include "cuda_runtime.h" 8 #include "device_launch_parameters.h" 9 using namespace std; 10 using namespace cv; 11 12 __global__ void Add_kernel(const int2* d_A, const int2* d_B,int2* d_C,int width, int height) 13 { 14 int x = threadIdx.x + blockIdx.x * blockDim.x; 15 int y = threadIdx.y + blockIdx.y * blockDim.y; 16 17 if(x < width && y < height) 18 { 19 int offset = x + y*width; 20 d_C[offset].x = d_A[offset].x + d_B[offset].x; 21 d_C[offset].y = d_A[offset].y + d_B[offset].y; 22 } 23 } 24 int main() 25 { 26 Mat img(3, 4, CV_32S, Scalar_<int>(0)); 27 28 cout<<img<<endl; 29 cout<<endl; 30 31 32 for(int i = 0 ; i < img.rows; i++) 33 { 34 for(int j = 0 ; j < img.cols; j++) 35 { 36 img.at<int>(i,j)=i+j; 37 } 38 } 39 cout<<endl; 40 41 cout<<img<<endl; 42 43 44 size_t memSize = img.step * img.rows; 45 int2* d_A = NULL; 46 int2* d_B = NULL; 47 int2* d_C = NULL; 48 cudaMalloc((void**)&d_A, memSize); 49 cudaMalloc((void**)&d_B, memSize); 50 cudaMalloc((void**)&d_C, memSize); 51 52 cudaMemcpy(d_A,img.data,memSize, cudaMemcpyHostToDevice); 53 cudaMemcpy(d_B,img.data,memSize, cudaMemcpyHostToDevice); 54 55 dim3 threads(16, 16); 56 dim3 grids((img.rows + threads.x - 1)/threads.x,(img.cols + threads.y - 1)/threads.y); 57 Add_kernel<<<grids,threads>>>(d_A, d_B, d_C, img.rows, img.cols); 58 59 cudaMemcpy(img.data, d_C,memSize,cudaMemcpyDeviceToHost); 60 cout<<"GPU"<<endl; 61 cout<<img<<endl; 62 cudaFree(d_A); 63 cudaFree(d_B); 64 cudaFree(d_C); 65 66 system("pause"); 67 return 0; 68 }
转载于:https://www.cnblogs.com/LzKlyhPorter/p/4611281.html
cuda_opencv 矩阵相加相关推荐
- 二维数组c语言矩阵加法,C 语言实例 – 两个矩阵相加 - C 语言基础教程
C 语言实例 使用多维数组将两个矩阵相加. #include int main(){ int r, c, a[100][100], b[100][100], sum[100][100], i, j; ...
- python矩阵相加_【python矩阵相加怎么做,这可是证明python功能的大好机会】- 环球网校...
[摘要]今天的python实践内容是为了让大家了解python矩阵相加方法,对代码编程有个感性的认知.也好让大家能够理性选择,不要盲目跟从,选择适合自己当前阶段的学习内容,循序渐进,以兴趣自我探索为向 ...
- Java黑皮书课后题第8章:*8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和
*8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 8.5(代数:两 ...
- 十字链表计算矩阵乘积 c语言,求用十字链表实现矩阵相加算法(C语言)急!!!...
匿名用户 1级 2010-02-09 回答 我有一个可以用的.怎么给你?百度hi我吧. 算了,我贴上来吧,由电脑编程网整理: #include #include #define smax 45 typ ...
- 两个矩阵相加 Exercise08_05
1 import java.util.Scanner; 2 /** 3 * @author 冰樱梦 4 * 时间:2018年12月 5 * 题目:两个矩阵相加 6 * 7 */ 8 public cl ...
- (篇三)C语言的冒泡排序多解、选择排序、数组合并、矩阵相加
文章目录 一.经典冒泡排序与选择排序 二.矩阵相加 三.数组合并 四.卖西瓜问题 C语言是非常锻炼结构化思维的语言,而结构化思维的编程思维非常重要的一点,让我们通过练习C语言实例增强我们的编程思维吧 ...
- 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)
我第一下拿到这个题目,第一反应就是先定义好数据结构,然后构建好十字链表基础操作的函数,也就是"创插遍历"这些操作.下面是我的定义和函数操作. typedef int ElemT ...
- 矩阵的实现(矩阵相加)
#include <iostream> using namespace std;class Matrix { private: int rows,columns; //矩阵行数列数 int ...
- 习题 10.4 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。
C++程序设计(第三版) 谭浩强 习题10.4 个人设计 习题 10.4 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运算符"+",使之能用于矩阵相加.如:c=a+b. 代 ...
最新文章
- 爬虫之requests模块发送post请求
- QuarkXPress 2020中文版
- java 判断qq_Java检测QQ是否在线状态
- 从上千篇论文脱颖而出,支付宝论文凭什么获得WWW2020评委认可?
- JVM系列之内存泄漏
- 如何处理SAP Launchpad上tile打不开的问题
- android 按钮控制线程,关于手机安卓-线程测试
- 对CloseHandle用法的理解
- linux中python如何调用matlab的数据_如何在Python中创建Gif动图?(动图数据可视化基础教学)
- No Need for Genius Envy
- 协方差检验用在什么地方_胶带还有什么隐藏功能,看看这几个,家里很多地方用得到...
- java语句以什么结尾_[JAVA] 关于语句的结尾
- 对三款软件的测评、分析和建议
- Profibus通讯接口连接不上怎么办
- iec104点号_IEC104规约报文说明(104报文解释的比较好的文本)
- BME280嵌入式设计-基于STM32F103的温湿度气压控制板-支持蓝牙串口输出数据!!!
- 计算机科学与因果关系,因果关系,概率和时间
- 小ck活动机器人包包_2018爆款包:不是LV,Gucci而是平价小CK~
- MacOS解压rar文件
- react 命名规范 书写顺序
热门文章
- 看看10万程序员怎么评论:零基础的前端开发该如何系统地学习?
- “无现金”社会来临,你还有安全感吗?
- openstack学习笔记三 创建第一个实例
- BZOJ2062 : 素颜2(face2)
- 为什么要使用符号作为hash的键
- IOS 学习资料汇总(^_^)
- citrix lic申请流程
- vue结合php增删改查实例,从vue基础开始创建一个简单的增删改查的实例
- 计算机组成原理 — CPU — 缓存访问
- Linux 操作系统原理 — 内存 — 基于局部性原理实现的内/外存交换技术