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

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.xdnf.cn/news/9102.html

相关文章:

  • 第12次04 :首页展示用户名
  • 数据仓库维度建模详细过程
  • 频繁报FTPResponse 421 received.Server closed connection
  • 1. 数据结构
  • 《软件工程》第 8 章 - 人机交互设计
  • QML设计登录界面
  • 基于FPGA的IIC多通道选择器(IIC Switch/Bridge)
  • Qt popup窗口半透明背景
  • mac for vscode集成的源代码管理 撤销和删除文件报错Permission denied
  • 【Macos】安装前端环境rust+node环境
  • 从界面设计到设备互联:基于Qt的ARM Linux自动化控制面板开发全解析
  • 【图像处理基石】什么是色彩模式?
  • 深度学习在建筑物提取中的应用综述
  • 【Qt开发】输入类控件
  • C语言初阶--结构体
  • 高性能排行榜系统架构实战
  • 解码词向量:让AI语言模型更透明
  • Leetcode 3563. Lexicographically Smallest String After Adjacent Removals
  • 基于Flask实现当当网书籍数据分析大屏
  • 清除谷歌浏览器中的“您的浏览器由所属组织/贵单位管理”
  • 《软件工程》第 2 章 -UML 与 RUP 统一过程
  • GitHub Page填写域名显示被占用
  • (转)Docker与K8S的区别
  • Java中Map集合的遍历方式详解
  • 【监控】PromQL 查询语言
  • vscode连接的linux服务器,上传项目至github
  • 开启MySQL的binlog日志
  • 每天掌握一个Linux命令 - ab(Apache Benchmark)
  • 进程IO之 进程
  • 组态王KingSCADA4.0连接1200PLC实战教程以及麒麟版问题说明