当前位置: 首页 > article >正文

OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

该函数用于创建一个 Scharr 滤波器(基于 CUDA 加速),用于图像的一阶导数计算。它常用于边缘检测任务中,相比 Sobel 滤波器具有更高的方向精度和更小的误差。

在 GPU 上使用此滤波器可显著提升图像处理速度,特别适合大规模图像或实时视频处理任务。

函数原型

Ptr<Filter> cv::cuda::createScharrFilter 	
(int  	srcType,int  	dstType,int  	dx,int  	dy,double  	scale = 1,int  	rowBorderMode = BORDER_DEFAULT,int  	columnBorderMode = -1 
) 		

参数

参数名类型描述
srcTypeint输入图像类型。例如 CV_8UC1, CV_32FC1 等。
dstTypeint输出图像类型。通常使用浮点类型如 CV_32FC1
dxintx 方向上的导数阶数,取值为 0 或 1。
dyinty 方向上的导数阶数,取值为 0 或 1,且必须满足 dx + dy == 1
scaledouble可选比例因子,默认为 1。用于对滤波结果进行缩放。
rowBorderModeint行方向滤波时使用的边界填充方式。常用如 BORDER_DEFAULTBORDER_REPLICATE 等。
columnBorderModeint列方向滤波时使用的边界填充方式。默认值 -1 表示与 rowBorderMode 相同。

代码示例

#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 读取图像并上传到 GPUcv::Mat h_input = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );cv::cuda::GpuMat d_input, d_output;d_input.upload( h_input );// 创建 Scharr 滤波器(检测 x 方向边缘)auto scharrX = cv::cuda::createScharrFilter( CV_8UC1, CV_32FC1, 1, 0 );// 应用滤波器scharrX->apply( d_input, d_output );// 下载结果并显示cv::Mat h_output;d_output.download( h_output );// 归一化显示cv::convertScaleAbs( h_output, h_output );  // 转换回 uchar 类型cv::imshow( "Scharr X Output", h_output );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.lryc.cn/news/2387737.html

相关文章:

  • html css js网页制作成品——HTML+CSS+js醇香咖啡屋网页设计(5页)附源码
  • [特殊字符] 构建高内聚低耦合的接口架构:从数据校验到后置通知的分层实践
  • brep2seq 源码笔记2
  • UE5 蓝图,隐藏一个Actor,同时隐藏它的所有子物体
  • 人工智能AI之机器学习基石系列 第 2 篇:数据为王——机器学习的燃料与预处理
  • 代码随想录算法训练营 Day58 图论Ⅷ 拓扑排序 Dijkstra
  • 实现单例模式的6种方法(Python)
  • 基于 STM32 的智慧农业温室控制系统设计与实现
  • 深度学习优化器相关问题
  • 【免费】【无需登录/关注】度分秒转换在线工具
  • 常见的垃圾回收算法原理及其模拟实现
  • fpga-编程线性序列机和状态机
  • 力扣面试150题--完全二叉树的节点个数
  • Qt 多线程环境下的全局变量管理与密码安全
  • 内网映射有什么作用,如何实现内网的网络地址映射到公网连接?
  • BLIP3-o:一系列完全开源的统一多模态模型——架构、训练与数据集
  • DNS解析流程入门篇
  • spring4第2课-ioc控制反转-依赖注入,是为了解决耦合问题
  • 大模型系列22-MCP
  • 【监控】Prometheus+Grafana 构建可视化监控
  • vscode里几种程序调试配置
  • RAGFlow源码安装操作过程
  • Unity使用XCharts动态配置数据——折线图(LineChart)
  • 【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
  • DAY9 热力图和箱线图的绘制
  • 如何查看 GitLab 内置的 PostgreSQL 版本?
  • VR 技术与病毒分离鉴定:一场奇妙的邂逅​
  • 解释一下NGINX的反向代理和正向代理的区别?
  • 数学笔记一:标量、向量和矩阵基本概念辨析
  • vue3获取两个日期之间的所有时间