使用cuda实现图像的转置

图像的转置原理很简单,就是矩阵转置,把行变成列。

没有使用GPU共享内存的时候,GPU处理速度是CPU的3倍左右,使用shared memory后,可以达到10倍以上的加速。

但opencv里的图像转置,直接调用cv::Mat的t()方法,就可以返回一个转置后的新的图像对象,底层应该经过优化了,速度和GPU相比,没什么差异。相反,因为GPU使用前要分配显存、拷贝数据、释放显存,这些操作的耗时远大于转置处理的耗时。因此,在使用opencv时,没必要用cuda来实现图像的转置,不然增加了代码量,收益也不大。

直接上cuda版本的图像转置代码吧。

#include

#include

#include "cuda_runtime.h"

#include "device_launch_parameters.h"

#include "device_functions.h"

<

你可能感兴趣的:(c++,c++,图像处理)