C++:filter2D函数简要概述
OpenCV中的filter2D函数是一个非常强大的工具,用于对图像进行卷积操作,从而应用各种线性滤波器。这个函数能够处理图像中的每个像素,通过将其与指定的卷积核(或称为滤波器)进行卷积运算,来修改图像的特性。以下是关于filter2D函数的详细介绍:
函数原型
在OpenCV中,filter2D函数的原型如下:
void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT);
参数说明
- src:输入图像。
- dst:输出图像,与输入图像
src具有相同的大小和通道数。 - ddepth:输出图像的所需深度(数据类型)。当其为-1时,表示输出图像与输入图像具有相同的深度。
- kernel:卷积核(或称为滤波器),它是一个单通道的浮点矩阵。这个矩阵定义了如何对输入图像进行卷积操作。
- anchor:内核的锚点,它指示内核中过滤点的相对位置。锚点应该位于内核内;默认值(-1,-1)表示锚点位于内核中心。
- delta:一个可选值,它将在将过滤像素存储到
dst之前添加到过滤像素上。 - borderType:像素外推方法,用于处理图像边界外的像素。它决定了当卷积核超出图像边界时,如何处理这些边界像素。常见的选项包括
BORDER_CONSTANT、BORDER_REPLICATE、BORDER_REFLECT等。
工作原理
filter2D函数实际上执行的是卷积运算(尽管在技术上,它计算的是相关性而不是严格的卷积,因为不涉及翻转卷积核)。卷积运算涉及将卷积核“滑过”输入图像,并对每个与卷积核大小相同的子矩阵的对应元素进行乘法运算,然后将结果相加。这个过程会生成一个新的像素值,该值被放置在输出图像的相应位置上。当卷积核滑过整个输入图像时,这个过程会重复进行,直到生成完整的输出图像。
应用场景
通过改变卷积核,filter2D函数可以实现多种图像处理效果,包括但不限于:
- 图像锐化:使用特定的锐化卷积核可以使图像的边缘更加清晰。
- 均值滤波:使用平均卷积核可以减少图像噪声,但可能会使图像变得模糊。
- 高斯滤波:高斯滤波是一种常用的图像平滑技术,它可以减少图像噪声同时保持边缘信息。虽然
filter2D函数本身不直接提供高斯核的生成,但可以通过getGaussianKernel函数生成高斯核,并使用filter2D进行高斯滤波。 - 边缘检测:通过设计特定的卷积核(如Sobel算子、Laplacian算子等),可以检测图像中的边缘。
示例代码
以下是一个使用filter2D函数进行均值滤波的示例代码(Python版):
#include <opencv2/opencv.hpp>
#include <iostream> using namespace cv;
using namespace std; int main() { // 加载图像 Mat img = imread("path_to_your_image.jpg"); if (img.empty()) { cout << "Could not open or find the image!" << endl; return -1; } // 创建一个5x5的平均滤波器核 // 注意:OpenCV中的filter2D函数期望的是float类型的核,并且会自动除以核的元素总数来归一化 Mat kernel = Mat::ones(5, 5, CV_32F) / 25.0; // 使用filter2D函数进行均值滤波 Mat dst; filter2D(img, dst, -1, kernel); // 显示原始图像和滤波后的图像 imshow("Original Image", img); imshow("Averaging Filtered Image", dst); // 等待按键事件 waitKey(0); // 销毁所有OpenCV创建的窗口 destroyAllWindows(); return 0;
}
在这个示例中,我们创建了一个5x5的平均滤波器核,并使用filter2D函数将其应用于输入图像。结果是一个经过平均滤波处理的图像,其噪声水平有所降低。
相关文章:
C++:filter2D函数简要概述
OpenCV中的filter2D函数是一个非常强大的工具,用于对图像进行卷积操作,从而应用各种线性滤波器。这个函数能够处理图像中的每个像素,通过将其与指定的卷积核(或称为滤波器)进行卷积运算,来修改图像的特性。…...
Postman使用教程【项目实战】
目录 引言软件下载及安装项目开发流程1. 创建项目2. 创建集合(理解为:功能模块)3. 设置环境变量,4. 创建请求5. 测试脚本6. 响应分析7. 共享与协作 结语 引言 Postman 是一款功能强大的 API 开发工具,它可以帮助开发者测试、开发和调试 API。…...
微软Phi-3:小型而强大的AI模型解析与实战指南
微软Phi-3:小型而强大的AI模型解析与实战指南 引言 随着人工智能技术的飞速发展,小型而高效的AI模型逐渐成为研究与应用的新热点。微软研究院推出的Phi-3系列模型,以其卓越的性能和高效的成本效益,在AI领域引起了广泛关注。本文…...
Python 获取 SQL 指纹和 HASH 值
前言 本文介绍一个提取 SQL 指纹的方法,就是将 SQL 语句的条件转换为 ?可用于脱敏和 SQL 聚类分析的场景。 1. 工具安装 这里用到的工具,就是 pt 工具集中的 pt-fingerprint 含在 Percona Toolkit 中,安装方法可参考 Percona T…...
基于OpenCv的快速图片颜色交换,轻松实现图片背景更换
图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…...
在Linux下直接修改磁盘镜像文件的内容
背景 嵌入式Linux系统通常在调试稳定后,会对磁盘(SSD、NVME、SD卡、TF卡)做个镜像,通常是.img后缀的文件,以后组装新设备时,就将镜像文件烧录到新磁盘即可,非常简单。 这种方法有个不便之处&a…...
ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现
文章目录 1. 开发者异常页面(1)Startup.cs 页面的基础配置(2)自定义显示报错代码的前后XX行 2. MVC 的原理3. MVC 的实现4.默认路由路径5.返回Json字符串 1. 开发者异常页面 (1)Startup.cs 页面的基础配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…...
jvm 07 GC算法,内存池,对象内存分配
01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数1, 当引用失效时,计数-1,如果计数0,表示没有其他对象引用,…...
ComfyUI入门教程
本文主要介绍了通过源码运行comfyui,默认例子介绍,节点管理器的使用,以及界面汉化。可多参考开源工作流,多加实践,从而掌握comfyui操作。 1.源码运行comfyui 执行命令python main.py如下: 安装numpy 1.x最…...
Flutter TabBar与TabBarView联动及获取当前点击栏目索引
TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件,其中TabBar用于导航切换,TabBarView则是配合其切换显示的对应的视图,官网参考地址:TabBarView class - material library - Dart API。 实现一体联动…...
【区块链+跨境服务】跨境出口电商溯源 | FISCO BCOS应用案例
当前跨境出口电商已成为带动我国外贸发展的中坚力量,尤其疫情特殊时期,成为推动经济增长的一个重要组成 部分。但是跨境出口电商流程长、环节多,且需辗转于不同的服务商以及国家之间,监管与定位也相对困难,容 易出现诸…...
记录一次mysql死锁问题的分析排查
记录一次死锁问题的分析排查 现象 底层往kafka推送设备上线数据应用层拉取设备上线消息,应用层有多个消费者并发执行将设备上线数据同步数据库表pa_terminal_channel日志报:(Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: …...
【UE5.1 角色练习】16-枪械射击——瞄准
目录 效果 步骤 一、瞄准时拉近摄像机位置 二、瞄准偏移 三、向指定方向射击 四、连发 效果 步骤 一、瞄准时拉近摄像机位置 打开角色蓝图,在事件图表中添加如下节点,当进入射击状态时设置目标臂长度为300,从而拉近视角。 但是这样切…...
04OLED简介和调试方法
OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结: OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕,但是单片机很多时候由于成本和电路结构…...
“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“
目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令,安装Nginx 3.2.运行以下命令,查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…...
院内导航:如何用科技破解就医找路难题
自2019年开始“院内导航”被纳入医院智慧服务评估体系以来,到2023年改善就医服务升级的部署,每一步都见证了我国医疗卫生体系向智能化、人性化迈进的坚实步伐。 面对庞大复杂的医院环境与日益增长的就诊需求,如何让患者在茫茫人海中迅速找到就…...
C++基础篇(1)
目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习,话不多说,直接上货!!! 1.第一个C程…...
云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析
随着科技的快速发展,视频监控技术已经广泛应用于各个领域,如公共安全、商业管理、教育医疗等。与此同时,视频转码技术作为视频处理的关键环节,也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…...
xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色
要想在xcode中使用自定义颜色或者配置主题色,需要在Assets中配置,打开Assets文件,然后点击添加Color Set: 输入颜色的名称,然后选中这个颜色,会出现两个颜色: Any Appearance表示亮色模式下使用…...
相同含义但不同类型字段作为join条件时注意事项
假设表A和表B中都有表示学号的stu_id字段,但该字段在表A和表B中类型分别为bigint和string。当直接通过该字段进行join时,一般情况下可以得到我们预期的结果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果学号长度较长的…...
飞行器设计避坑指南:盘点那些影响气动效率的‘隐形杀手’(从摩擦阻力到干扰阻力)
飞行器设计避坑指南:盘点那些影响气动效率的‘隐形杀手’ 记得第一次参加大学生飞行器设计竞赛时,我们的团队花了整整三个月打造了一架翼展两米的固定翼无人机。试飞当天,看着它摇摇晃晃地起飞,却在爬升阶段突然失速坠毁ÿ…...
ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例)
ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例) 在机器人开发领域,数据的高效传递与标准化处理是系统稳定运行的关键。ROS2作为新一代机器人操作系统,其接口系统提供了强大的数据交换能力&#x…...
JVM堆内存泄漏排查:从-Xmx设置到hprof文件分析的完整避坑指南
JVM堆内存泄漏排查:从参数配置到实战分析的完整方法论 最近在排查一个线上服务的内存泄漏问题时,我发现很多开发者对JVM内存问题的处理还停留在"遇到OOM就重启服务"的初级阶段。实际上,一套系统化的内存排查方法论不仅能快速定位问…...
探索二维非常规态型近场动力学代码
非常规态型近场动力学代码 纬度:二维; 时间积分:自适应动态松弛 or verlet-velocity; 零能抑制模式:silling method or Li pan method; 语言:MATLAB 代码注释详细,可适当在数值模拟领域,近场动力…...
2026论文写作工具红黑榜:AI论文工具怎么选?用过才敢说!
2026年论文写作工具红黑榜出炉,千笔AI、ThouPen、豆包位列红榜,适配国内学术规范,提升写作效率;黑榜需避开低质免费工具、无真实引用平台及过度依赖全文生成的工具。选择时可按需求匹配度 - 数据可信度 - 成本承受力三维模型进行评…...
神经网络实战之dsp实现神经网络vad-1
vad神经网络有很多不同的实现,这里的神经网络是基于pytorch实现的,网络结构如下: class MiniVAD(nn.Module):def __init__(self, n_fft512):super().__init__()self.input48 #输入B T 48# 融合层self.fusion nn.Sequential(nn.Linear(self.i…...
告别丑陋代码块!用PyQt5+pygments实现Word代码高亮粘贴(附完整源码)
告别丑陋代码块!用PyQt5pygments实现Word代码高亮粘贴(附完整源码) 在技术文档编写过程中,代码展示是不可或缺的部分。然而,直接将IDE中的代码复制到Word文档时,往往会丢失原有的高亮和格式,变成…...
AI 提示词秒变高手!5 步精准操控法,输出效果直接翻倍
AI 提示词精准操控指南|可直接套用模板想要 AI 输出又快又准,别再靠瞎猜。这套5 步黄金提示法,照着填就能让输出质量翻倍。第一步:锁定目标 —— 用「动词 结果」精准定位模板:生成 / 分析 / 优化【具体内容】&#x…...
避坑指南:Unity物体闪烁效果Material内存泄漏问题排查(附Shader优化方案)
Unity物体闪烁效果的性能陷阱与工业级解决方案 在游戏开发中,物体闪烁效果是一种常见的视觉反馈手段,用于提示玩家可交互对象、危险区域或特殊状态。然而,许多开发者在使用传统实现方式时,往往会掉入Material内存泄漏的陷阱&#…...
医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例)
医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例) 在医学影像分析领域,特征提取是构建精准诊断模型的关键步骤。Pyradiomics作为开源的医学影像组学工具包,通过YAML配置文件提供了高度灵活的特征提取方案…...
