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

news2025/7/18 17:15:49
  • 操作系统: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()
{
    // 读取图像并上传到 GPU
    cv::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.coloradmin.cn/o/2387737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html css js网页制作成品——HTML+CSS+js醇香咖啡屋网页设计(5页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…

brep2seq 源码笔记2

数学公式是什么def forward(self, noise_1, noise_2, real_z_pNone): if(real_z_p): z_p_ self.downsample(real_z_p) input_2 z_p_ noise_2 z_f self.gen_z_f(input_2) output real_z_p z_f else: …

UE5 蓝图,隐藏一个Actor,同时隐藏它的所有子物体

直接用actor.sethideningame是不行的 要先找到根组件&#xff0c;这样就有覆盖子物体的选项了

人工智能AI之机器学习基石系列 第 2 篇:数据为王——机器学习的燃料与预处理

专栏系列&#xff1a;《人工智能AI之机器学习基石》② 高质量的数据是驱动机器学习模型的强大燃料 &#x1f680; 引言&#xff1a;无米之炊与数据的重要性 在上一篇文章《什么是机器学习&#xff1f;——开启智能之门》中&#xff0c;我们一起揭开了机器学习的神秘面纱&…

代码随想录算法训练营 Day58 图论Ⅷ 拓扑排序 Dijkstra

图论 题目 117. 软件构建 拓扑排序&#xff1a;给出一个有向图&#xff0c;把这个有向图转成线性的排序就叫拓扑排序。 当然拓扑排序也要检测这个有向图是否有环&#xff0c;即存在循环依赖的情况&#xff0c;因为这种情况是不能做线性排序的。所以拓扑排序也是图论中判断有向…

实现单例模式的6种方法(Python)

目录 一. 基于模块的实现(简单&#xff0c;易用) 二. 重新创建时报错(不好用) 三. 只靠方法获取实例(不好用) 四. 类装饰器 五. 重写__new__方法 六. 元类 七. 总结 单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;其核心目标是确保一个类…

深度学习优化器相关问题

问题汇总 各类优化器SGDMomentumNesterovAdagardAdadeltaRMSpropAdam优化器 为什么Adam不一定最优而SGD最优的深度网络中loss除以10和学习率除以10等价吗L1,L2正则化是如何让模型变得稀疏的&#xff0c;正则化的原理L1不可导的时候该怎么办梯度消失和梯度爆炸什么原因&#xff…

【免费】【无需登录/关注】度分秒转换在线工具

UVE Toolbox 功能概述 这是一个用于地理坐标转换的在线工具&#xff0c;支持两种转换模式&#xff1a; 十进制度 → 度分秒 度分秒 → 十进制度 使用方法 十进制度转度分秒 在"经度"输入框中输入十进制度格式的经度值&#xff08;例如&#xff1a;121.46694&am…

常见的垃圾回收算法原理及其模拟实现

1.标记 - 清除&#xff08;Mark - Sweep&#xff09;算法&#xff1a; 这是一种基础的垃圾回收算法。首先标记所有可达的对象&#xff0c;然后清除未被标记的对象。 缺点是会产生内存碎片。 原理&#xff1a; 如下图分配一段内存&#xff0c;假设已经存储上数据了 标记所有…

力扣面试150题--完全二叉树的节点个数

Day 51 题目描述 思路 根据完全二叉树的规律&#xff0c;完全二叉树的高度可以直接通过不断地访问左子树就可以获取&#xff0c;判断左右子树的高度: 1. 如果相等说明左子树是满二叉树, 然后进一步判断右子树的节点数(最后一层最后出现的节点必然在右子树中&#xff09; 2. 如…

BLIP3-o:一系列完全开源的统一多模态模型——架构、训练与数据集

摘要 在近期关于多模态模型的研究中&#xff0c;将图像理解与生成统一起来受到了越来越多的关注。尽管图像理解的设计选择已经得到了广泛研究&#xff0c;但对于具有图像生成功能的统一框架而言&#xff0c;其最优模型架构和训练方案仍有待进一步探索。鉴于自回归和扩散模型在…

DNS解析流程入门篇

一、DNS 解析流程 1.1 浏览器输入域名 当在浏览器中输入 www.baidu.com 时&#xff0c;操作系统会按照以下步骤进行 DNS 解析&#xff1a; 检查本地 hosts 文件 &#xff1a;操作系统先检查本地的 /etc/hosts 文件&#xff0c;查看是否存在域名与 IP 地址的对应关系。如果找到…

大模型系列22-MCP

大模型系列22-MCP 玩转 MCP 协议&#xff1a;用 Cline DeepSeek 接入天气服务什么是 MCP&#xff1f;环境准备&#xff1a;VScode Cline DeepSeek**配置 DeepSeek 模型&#xff1a;****配置 MCP 工具****uvx是什么&#xff1f;****安装 uv&#xff08;会自动有 uvx 命令&…

【监控】Prometheus+Grafana 构建可视化监控

在云原生和微服务架构盛行的今天&#xff0c;监控系统已成为保障业务稳定性的核心基础设施。作为监控领域的标杆工具&#xff0c;Prometheus和Grafana凭借其高效的数据采集、灵活的可视化能力&#xff0c;成为运维和开发团队的“标配”。 一、Prometheus Prometheus诞生于2012…

RAGFlow源码安装操作过程

RAGFlow是一款基于深度文档理解构建的开源 RAG&#xff08;Retrieval-Augmented Generation&#xff09;引擎&#xff0c;可作为Dify的外部知识库使用[1]。本文主要介绍RAGFlow前端和后端等源码安装操作过程。 一.后端安装 特别注意&#xff1a;python ">3.12,<3…

Unity使用XCharts动态配置数据——折线图(LineChart)

XCharts官网地址&#xff1a;https://xcharts-team.github.io/ 本地上传资源&#xff1a;https://download.csdn.net/download/m0_64375864/90919669 效果图&#xff1a; 动态配置数据&#xff1a; public class Test3 : MonoBehaviour {public LineChart lineChart;public …

【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信类 学   号 2023112915 班   级 23L0505 学 生 杨昕彦 指 导 教 师 刘宏伟 计算机科学…

DAY9 热力图和箱线图的绘制

浙大疏锦行 学会了绘制两个图&#xff1a; 热力图&#xff1a;表示每个特征之间的影响&#xff0c;颜色越深数值越大表示这两个特征的关系越紧密 箱线图&#xff1a;表示每个特征的数据分布情况 箱体&#xff08;Box&#xff09;&#xff1a; 箱体的上下边界分别表示第一四分位…

解释一下NGINX的反向代理和正向代理的区别?

大家好&#xff0c;我是锋哥。今天分享关于【解释一下NGINX的反向代理和正向代理的区别?】面试题。希望对大家有帮助&#xff1b; 解释一下NGINX的反向代理和正向代理的区别? NGINX的反向代理和正向代理的区别主要体现在它们的功能和使用场景上。下面我会详细解释它们的定义…

数学笔记一:标量、向量和矩阵基本概念辨析

一、标量 标量&#xff08;Scalar&#xff09; 是一种仅用数值大小&#xff08;即 “量值”&#xff09;就能完全描述的物理量或数学对象&#xff0c;它不具有方向属性。 例如在实数领域的正数、负数。 在物理学领域的多少斤、多少公斤、水温多少度、气温多少度都是标量。 …