部分opencv中的GPU加速函数(中文翻译)

由于项目需要,翻译了一部分可以用于我现在项目的opencv函数,记录于此,原始英文文档来自于http://blog.csdn.net/mtt_sky/article/details/42607839。


getCudaEnableDeviceCount:返回已安装CUDA设备的数量;



2. setDevice:设置adevice并为当前线程初始化它;


3. getDevice:返回当前设备索引设置或默认初始化;


4. resetDevice:在当前进程中显式地销毁和清除与当前设备相关联的所有资源;


5. FeatureSet:枚举提供GPU计算功能;


class :: TargetArchs:提供一组静态方法的类,以检查GPU模块构建的NVIDIA卡架构;


class :: DeviceInfo:提供查询指定GPU属性的功能的类;


8. DeviceInfo :: name:返回设备名称;


9. DeviceInfo :: majorVersion:返回主要的计算能力版本;


10. DeviceInfo :: minorVersion:返回次要计算能力版本;


11. DeviceInfo :: multiProcessorCount:返回流处理器的数量;


12. DeviceInfo :: freeMemory:以字节为单位返回可用内存量;


13. DeviceInfo :: totalMemory:以字节为单位返回总内存量;


14. DeviceInfo :: supports:提供有关GPU功能支持的信息;


15. DeviceInfo :: isCompatible:检查GPU模块和设备的兼容性;


16. DeviceInfo :: deviceID:返回从0开始的GPU设备的系统索引;


struct :: PtrStepSz:轻量级封装GPU上的投影存储器并传递给nvcc编译代码(CUDA内核);


struct :: PtrStep:结构类似于gpu :: PtrStepSz,但只包含一个指针和行步;


19. class :: GpuMat:用于GPU内存的基本存储类,具有引用计数。其接口匹配Mat界面;


createContinuous:在GPU内存中创建连续矩阵;


21. ensureSizeIsEnough:确保矩阵的大小足够大,矩阵具有适当的类型;


registerPageLocked:page-locked矩阵的内存并将其映射到设备;


23. unregisterPageLocked:取消映射矩阵的内存,并使其可再次可页面;


class :: CudaMem:具有引用计数的类包装来自CUDA的特殊内存类型分配函数。它的接口也是Mat() - 但是具有额外的内存类型参数;


25. CudaMem :: createMatHeader:创建一个头,而不引用计数到gpu :: CudaMem数据;


26. CudaMem :: createGpuMatHeader:将CPU内存映射到GPU地址空间,并创建gpu :: GpuMat头,而不引用计数;


27. CudaMem :: canMapHostMemory:如果当前硬件支持地址空间映射和ALLOC_ZEROCOPY内存分配,则返回true;


class :: Stream:这个类封装了一个异步调用队列。一些功能使用附加的gpu :: Stream参数重载;


29. Stream :: queryIfComplete:如果当前流队列完成,则返回true,否则返回false;


Stream :: waitForCompletion:阻止当前CPU线程,直到流中的所有操作完成;


Stream :: enqueueDownload:将数据从设备复制到主机;


Stream :: enqueueUpload:将数据从主机复制到设备;


33. Stream :: enqueueCopy:将数据从设备复制到设备;


Stream :: enqueueMemSet:将设备内存初始化或设置为一个值;


Stream :: enqueueConvert:根据类型将矩阵类型从float转换为uchar;


Stream :: enqueueHostCallback:在流中的所有当前排队的项目已经完成之后,在主机上添加要调用的回调函数;


struct :: StreamAccessor:能够从gpu :: Stream获取cuda Stream_t并在stream_accessor.hpp中声明的类,因为它是唯一依赖于CUDA Runtime API的公头;


gemm(cv :: gemm):执行广义矩阵乘法;


转置(cv :: transpose):转置矩阵;


flip(cv :: flip):在垂直,水平或两个轴上翻转2D矩阵;


LUT(cv :: LUT):使用给定的查找表将源矩阵转换为目标矩阵:dst(I)= lut(src(I));


42. merge(cv :: merge):从多个单通道矩阵中创建多通道矩阵;


split(cv :: split):将多通道矩阵的每个平面复制到数组中;


幅度(cv ::幅度):计算复杂矩阵元素的大小;


amplitudeSqr:计算复矩阵元素的平方;


阶段(cv :: phase):计算复矩阵元素的极角;


cartToPolar(cv :: cartToPolar):将笛卡尔坐标转换为极坐标;


polarToCart(cv :: polarToCart):将极坐标转换为笛卡尔坐标;


规范化(cv :: normalize):规范数组的范数或值范围;


50. add(cv :: add):计算矩阵矩阵或矩阵标量和;


减去(cv :: subtract):计算矩阵矩阵或矩阵标量差;


乘法(cv :: multiply):计算矩阵矩阵或矩阵标量的每元素乘积;


divide(cv :: divide):计算矩阵矩阵或矩阵标量划分;


addWeighted(cv :: addWeighted):






90. threshold(cv :: threshold):对每个数组元素应用固定级别的阈值;


调整大小(cv :: resize):调整图像大小


92. warpAffine(cv :: warpAffine):对图像应用仿射变换;


93. buildWarpAffineMats(gpu :: warpAffine,gpu :: remap):构建仿射变换的转换图;


94. warpPerspective(cv :: warpPerspective):将透视变换应用于图像;


95. buildWarpPerspectiveMaps(gpu :: warpPerspective,gpu :: remap):构建透视变换的转换图;


旋转(gpu :: warpAffine):围绕原点(0,0)旋转图像,然后将其移动;


copyMakeBorder(cv :: copyMakeBorder):在图像周围形成边框;


Canny(cv :: Canny):使用Canny算法在图像中找到边;


117.HoughLines(cv :: HoughLines):使用经典的霍夫变换找到二进制图像中的行;


118.HoughLinesDownload(gpu :: HoughLines):将结果从gpu :: HoughLines下载到主机内存;


HoughCircles(cv :: HoughCircles):使用霍夫变换在灰度图像中找到圆;


HoughCirclesDownload(gpu :: HoughCircles):将结果从gpu :: HoughCircles下载到主机内存;

126. minMax(cv :: minMaxLoc):找到全局最小和最大矩阵元素并返回它们的值;


127. minMaxLoc(cv :: minMaxLoc):找到全局最小值和最大矩阵元素,并返回它们的值与位置;


boxFilter(cv :: boxFilter):使用标准化的框过滤器平滑图像;


178. blur(cv :: blur,gpu :: boxFilter):作为标准化框过滤器的同义词;


Sobel(cv :: Sobel):将广义Sobel算子应用于图像;


194. GaussianBlur(cv :: GaussianBlur):使用高斯滤波器平滑图像;

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个开源的计算机视觉库,它提供了许多用于图像和视频处理的函数和工具。在使用OpenCV时,可以通过使用GPU加速来提高图像处理的速度和效率。 要使用OpenCV进行GPU加速,首先需要确保你的计算机上安装了支持GPU加速的硬件和驱动程序。然后,你需要安装OpenCVGPU模块,该模块提供了与GPU相关的函数和类。 在OpenCV,可以使用cv::cuda命名空间函数和类来实现GPU加速。例如,可以使用cv::cuda::GpuMat类来表示图像数据,并使用cv::cuda::函数来执行各种图像处理操作,如滤波、边缘检测、图像变换等。 以下是使用OpenCV进行GPU加速的一般步骤: 1. 导入必要的头文件和命名空间: ```cpp #include <opencv2/opencv.hpp> #include <opencv2/core/cuda.hpp> using namespace cv; using namespace cv::cuda; ``` 2. 将图像数据传输到GPU内存: ```cpp Mat image = imread("image.jpg"); GpuMat gpuImage; gpuImage.upload(image); ``` 3. 在GPU上执行图像处理操作: ```cpp GpuMat gpuResult; cv::cuda::cvtColor(gpuImage, gpuResult, COLOR_BGR2GRAY); ``` 4. 将处理结果从GPU内存传输回主机内存: ```cpp Mat result; gpuResult.download(result); ``` 5. 对处理结果进行后续操作: ```cpp imshow("Result", result); waitKey(0); ``` 需要注意的是,GPU加速并不是在所有情况下都能带来性能提升。在某些情况下,CPU可能更适合执行特定的图像处理任务。因此,在使用GPU加速之前,建议先进行性能测试和比较,以确定是否适合使用GPU加速

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值