OpenCV 图形API(37)图像滤波-----分离过滤器函数sepFilter()

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

算法描述

应用一个可分离的线性滤波器到一个矩阵(图像)。

该函数对矩阵应用一个可分离的线性滤波器。也就是说,首先,src 的每一行都用一维核 kernelX 进行滤波。然后,所得结果的每一列都使用一维核 kernelY 进行滤波。最终结果被返回。

支持的矩阵数据类型包括 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

cv::gapi::sepFilter 是 OpenCV 的 G-API 模块中用于对图像应用分离过滤器(separable filter)的一个函数。这个函数可以用来执行高效的二维卷积操作,特别适用于那些可以分解为两个一维滤波器的情况。

函数原型

GMat cv::gapi::sepFilter 	
(const GMat &  	src,int  	ddepth,const Mat &  	kernelX,const Mat &  	kernelY,const Point &  	anchor,const Scalar &  	delta,int  	borderType = BORDER_DEFAULT,const Scalar &  	borderValue = Scalar(0) 
) 		

注意:
在浮点计算的情况下,如果硬件支持,则会进行向最近的偶数舍入(如果没有,则舍入到最近的值)。
函数文本ID是 “org.opencv.imgproc.filters.sepfilter”。

参数

  • 参数 src: 源图像。

  • 参数 ddepth: 目标图像的期望深度(支持以下 src.depth() 和 ddepth 的组合:

    • 当 src.depth() = CV_8U 时,ddepth 可以是 -1/CV_16S/CV_32F/CV_64F
    • 当 src.depth() = CV_16U/CV_16S 时,ddepth 可以是 -1/CV_32F/CV_64F
    • 当 src.depth() = CV_32F 时,ddepth 可以是 -1/CV_32F/CV_64F
    • 当 src.depth() = CV_64F 时,ddepth 可以是 -1/CV_64F 如果 ddepth=-1,输出图像将具有与源相同的深度)
  • 参数kernelX: 用于滤波每一行的系数。

  • 参数 kernelY: 用于滤波每一列的系数。

  • 参数 anchor: 核内的锚点位置。默认值 (-1,-1) 表示锚点位于内核中心。

  • 参数 delta: 在存储之前添加到滤波结果中的值。

  • 参数 borderType: 像素外推方法,参见 cv::BorderTypes。

  • 参数 borderValue: 在常量边界类型的情况下的边界值。

代码示例

#include <opencv2/gapi/gkernel.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 读取输入图像cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR );if ( src.empty() ){std::cerr << "无法读取图像" << std::endl;return -1;}// 定义水平和垂直方向的卷积核cv::Mat kernelX = ( cv::Mat_< float >( 1, 3 ) << 1.0, 2.0, 1.0 );  // 示例水平卷积核cv::Mat kernelY = ( cv::Mat_< float >( 3, 1 ) << 1.0, 2.0, 1.0 );  // 示例垂直卷积核// 设置ddepth、anchor、delta和borderType等参数int ddepth = -1;             // 输出图像将具有与src相同的深度cv::Point anchor( -1, -1 );  // 锚点位于卷积核中心double delta   = 0;          // 不添加额外值int borderType = cv::BORDER_DEFAULT;// 创建G-API网络cv::GMat in;auto out = cv::gapi::sepFilter( in, ddepth, kernelX, kernelY, anchor, cv::Scalar( delta ), borderType );cv::GComputation comp( cv::GIn( in ), cv::GOut( out ) );// 应用到源图像并获取结果cv::Mat dst;comp.apply( cv::gin( src ), cv::gout( dst ) );// 显示结果cv::imshow( "Original Image", src );cv::imshow( "Filtered Image", dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76201.shtml

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

相关文章

webpack理解与使用

一、背景 webpack的最初目标是实现前端工程的模块化&#xff0c;旨在更高效的管理和维护项目中的每一个资源。 最早的时候&#xff0c;我们通过文件划分的方式实现模块化&#xff0c;也就是将每个功能及其相关状态数据都放在一个JS文件中&#xff0c;约定每个文件就是一个独立…

rac环境下,增加一个控制文件controlfile

先关闭节点二&#xff0c;在节点一上操作 1、查看控制文件个数和路径 SQL> show parameter control 2、备份参数文件 SQL> create pfile/home/oracle/orcl.pfile20250417 from spfile; 3、修改控制文件参数 SQL> alter system set contr…

git安装(windows)

通过网盘分享的文件&#xff1a;资料(1) 链接: https://pan.baidu.com/s/1MAenYzcQ436MlKbIYQidoQ 提取码: evu6 点击next 可修改安装路径 默认就行 一般从命令行调用&#xff0c;所以不用创建。 用vscode&#xff0c;所以这么选择。

Spring Boot整合难点?AI一键生成全流程解决方案

在当今的软件开发领域&#xff0c;Spring Boot 凭借其简化开发流程、快速搭建项目的优势&#xff0c;成为了众多开发者的首选框架。然而&#xff0c;Spring Boot 的整合过程并非一帆风顺&#xff0c;常常会遇到各种难点。而飞算 JavaAI 的出现&#xff0c;为解决这些问题提供了…

Python批量处理PDF图片详解(插入、压缩、提取、替换、分页、旋转、删除)

目录 一、概述 二、 使用工具 三、Python 在 PDF 中插入图片 3.1 插入图片到现有PDF 3.2 插入图片到新建PDF 3.3 批量插入多张图片到PDF 四、Python 提取 PDF 图片及其元数据 五、Python 替换 PDF 图片 5.1 使用图片替换图片 5.2 使用文字替换图片 六、Python 实现 …

山东大学软件学院创新项目实训开发日志(15)之中医知识问答历史对话查看bug处理后端信息响应成功但前端未获取到

在开发中医知识问答历史对话查看功能的时候&#xff0c;出现了前后端信息获取异同的问题&#xff0c;在经过非常非常非常艰难的查询之后终于解决了这一问题&#xff0c;而这一问题的罪魁祸首就是后端没有setter和getter方法&#xff01;&#xff01;&#xff01;&#xff01;&a…

Arkts应用全局UI状态存储和持久化V2(AppStorageV2、PersistenceV2和@Type)

目录 应用全局UI状态存储和持久化V2版本 AppStorageV2 connect remove keys 示例 使用限制 PersistenceV2 connect remove keys save notifyOnError 示例 使用限制 Type 使用限制 应用全局UI状态存储和持久化V2版本 以下实例AppStorageV2、PersistenceV2和装饰…

最大子序和问题——动态规划/贪心算法解决

目录 一&#xff1a;问题描述 二&#xff1a;解决思路1——动态规划思想 三&#xff1a;C 语言代码实现 四&#xff1a;复杂度分析 五&#xff1a;解决思路2——贪心算法思想 六&#xff1a;具体步骤 七: C语言代码实现 八&#xff1a;复杂度分析 一&#xff1a;问题描述 …

【Python入门】文件读取全攻略:5种常用格式(csv/excel/word/ppt/pdf)一键搞定 | 附完整代码示例

大家好&#xff0c;我是唐叔&#xff01;今天给大家带来一篇Python文件读取的终极指南。无论是数据分析、办公自动化还是爬虫开发&#xff0c;文件读取都是Python程序员必须掌握的核心技能。本文将详细介绍Python处理5大常用文件格式的方法&#xff0c;包含完整可运行的代码示例…

四、小白如何用Pygame制作一款跑酷类游戏(页面暂停和主角跑步动作的实现)

四、小白如何用Pygame制作一款跑酷类游戏&#xff08;页面暂停和主角跑步动作的实现&#xff09; 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 四、小白如何用Pygame制作一款跑酷类游戏&#xff08;页面暂停和主…

《基于 RNN 的股票预测模型代码优化:从重塑到直接可视化》

在深度学习领域&#xff0c;使用循环神经网络&#xff08;RNN&#xff09;进行股票价格预测是一个常见且具有挑战性的任务。本文将围绕一段基于 RNN 的股票预测代码的改动前后差别展开&#xff0c;深入剖析代码的优化思路和效果。 原始代码思路与问题 原始代码实现了一个完整…

Lambda 函数与 peek 操作的使用案例

Lambda 函数和 peek 操作是 Java 8 Stream API 中非常有用的特性&#xff0c;下面我将介绍它们的使用案例。 Lambda 函数使用案例 Lambda 表达式是 Java 8 引入的一种简洁的匿名函数表示方式。 集合操作 List<String> names Arrays.asList("Alice", "B…

Docker私有仓库页面访问实现

通过 docker run -d -p 5000:5000 --name registry registry:2 命令搭建的Docker私有仓库默认不提供网页访问界面。它是一个基于API的后端服务&#xff0c;主要用于镜像的存储和管理。但可以通过以下两种方式实现网页访问&#xff1a; 一、通过第三方Web UI工具扩展 1. 使用 D…

[王阳明代数讲义]语言模型核心代码调研

语言模型核心代码调研 基于Consciciteation‌的才气张量持续思考综述将文本生成建模为才气张量网络扩散过程&#xff0c;实现非自回归推理通过才气张量的群-拓扑流形交叉注意力实现多模态推理&#xff0c;将输入压缩到低维空间持续迭代提出「条件计算提前终止」机制&#xff0c…

flink jobmanager离奇的heap oom

文章目录 现象描述开始分析1.初步分析dump文件2.AI分析引用关系分析方向2.1 flink BlobServer bug分析方向2.2 和运行环境有关分析方向2.3 和任务有关 回到问题本身&#xff0c;思考一下1. seatunnel到底有没有问题2.再次分析zipfile对象3.分析seatunnel es connector 源码4 怀…

APP动态交互原型实例|墨刀变量控制+条件判断教程

引言 不同行业的产品经理在绘制原型图时&#xff0c;拥有不同的呈现方式。对于第三方软件技术服务公司的产品经理来说&#xff0c;高保真动态交互原型不仅可以在开发前验证交互逻辑&#xff0c;还能为甲方客户带来更直观、真实的体验。 本文第三部分将分享一个实战案例&#…

AI 驱动下的后端开发架构革命:从智能协同体系

AI 驱动下的后端开发架构革命&#xff1a;从智能协同体系 一、引言&#xff1a;AI 重构后端开发范式 在 2025 年的企业级技术演进中&#xff0c;人工智能正从辅助工具升级为核心架构要素。根据 Gartner《2025 智能技术栈成熟度报告》&#xff0c;传统 "人力编码 硬规则…

安卓基础(生命周期)

创建阶段&#xff1a;onCreate方法被调用&#xff0c;用于初始化 Activity&#xff0c;如设置布局等。启动阶段&#xff1a;依次调用onStart和onResume方法&#xff0c;让 Activity 变得可见并可与用户交互。暂停与恢复阶段&#xff1a;当 Activity 失去焦点但可见时&#xff0…

Uniapp: 下拉选择框 ba-tree-picker

目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…

Spring Boot实战:基于策略模式+代理模式手写幂等性注解组件

一、为什么需要幂等性&#xff1f; 核心定义&#xff1a;在分布式系统中&#xff0c;一个操作无论执行一次还是多次&#xff0c;最终结果都保持一致。 典型场景&#xff1a; 用户重复点击提交按钮网络抖动导致的请求重试消息队列的重复消费支付系统的回调通知 不处理幂等的风…