图像平滑处理:cv::filter2D()函数详解

news2024/10/7 3:25:23

cv::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 参数表示输出图像,ddepth 参数表示输出图像的深度,kernel 参数表示卷积核,anchor 参数表示锚点,delta 参数表示在将结果存储到输出图像之前添加到每个像素的可选值,borderType 参数表示边界填充类型。每个参数具体的详细解析见下:

src:输入图像。
dst:输出图像,与输入图像大小和通道数相同。
ddepth:输出图像的深度,可以设置为 -1,表示与输入图像深度相同。
kernel:卷积核,用于对图像进行滤波。
anchor:锚点,表示卷积核中心的位置。默认值为 (-1,-1),表示卷积核中心位于卷积核的中心。
delta:在将结果存储到输出图像之前添加到每个像素的可选值。默认值为 0。
borderType:边界填充类型,用于指定如何处理边界像素。默认值为 cv::BORDER_DEFAULT。

参数ddepth表示的图像深度分别有:

CV_8U:8 位无符号整数。
CV_16U:16 位无符号整数。
CV_16S:16 位有符号整数。
CV_32F:32 位浮点数。
CV_64F:64 位浮点数。
此外,您还可以将 ddepth 参数设置为 -1,表示输出图像的深度与输入图像的深度相同。

参数borderType还有以下边界填充类型:

cv::BORDER_CONSTANT:使用常数填充边界。
cv::BORDER_REPLICATE:复制最后一个元素来填充边界。
cv::BORDER_REFLECT:在边界处反射图像内容来填充边界。
cv::BORDER_WRAP:在边界处环绕图像内容来填充边界。
cv::BORDER_REFLECT_101:与 cv::BORDER_REFLECT 类似,但在反射时不包括最后一个元素。
cv::BORDER_TRANSPARENT:忽略边界像素。
cv::BORDER_DEFAULT:默认值,等同于 cv::BORDER_REFLECT_101

下面是一个简单的示例,它展示了如何使用 cv::filter2D 函数对图像进行高斯模糊:

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat src = cv::imread("image.jpg");  // 输入图片路径
    cv::Mat dst;
    cv::Mat kernel = (cv::Mat_<float>(3,3) << 1/16.0, 2/16.0, 1/16.0, 2/16.0, 4/16.0, 2/16.0, 1/16.0, 2/16.0, 1/16.0);
    cv::filter2D(src, dst, -1, kernel);
    cv::imshow("src", src);
    cv::imshow("dst", dst);
    cv::waitKey(0);
    return 0;
}

测试结果如下图所示:

在这里插入图片描述

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

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

相关文章

JAVA IO流 File 字节流 字符流(tedu)

JAVA IO流 File 字节流 字符流(tedu) 目录 JAVA IO流 File 字节流 字符流(tedu)IO简介1 流Stream2 IO流的继承结构3 File文件类3.1概述3.2创建对象3.3 常用方法 4 字节流读取4.1 InputStream抽象类4.2 FileInputStream子类4.3 BufferedInputStream子类4.4 练习&#xff1a;字节…

Radio Transmission

[BOI2009] Radio Transmission 无线传输 题目描述 给你一个字符串 s 1 s_1 s1​&#xff0c;它是由某个字符串 s 2 s_2 s2​ 不断自我连接形成的&#xff08;保证至少重复 2 2 2 次&#xff09;。但是字符串 s 2 s_2 s2​ 是不确定的&#xff0c;现在只想知道它的最短长度…

亚马逊云科技如何通过四大自研芯片助力企业创新,摆脱基础架构束缚

2023年6月27-28日&#xff0c;2023亚马逊云科技中国峰会在上海顺利举行。在此次峰会上我们可以清晰地看到为什么亚马逊云科技可以做到领先地位&#xff0c;为什么亚马逊云科技可以一直保持进步。这都与亚马逊云科技“基于客户需求&#xff0c;快速进行产品更新与技术迭代”的Da…

ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题&#xff0c;RPS 和 RFS 网卡多队列性能调优实践[1]&#xff0c;对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路&#xff0c;如果你是想了解…

使用Prometheus+Grafana实现监控

使用PrometheusGrafana实现监控 我们用 actuator 暴露应用本身的线程、bean 等信息&#xff0c;但是这些信息还是独立于 Prometheus 之外的。下面我们 将介绍如何将 SpringBoot Actuator 与 Prometheus 结合起来。 我们同样从 Spring Initializr 创建一个名为 spring-web-pr…

从零开始 Spring Boot 54:@NotNull in Entity

从零开始 Spring Boot 54&#xff1a;NotNull in Entity 图源&#xff1a;简书 (jianshu.com) 之前通过两篇文章介绍了 Hibernate Validation 在 Spring 中的应用&#xff1a; 从零开始 Spring Boot 13&#xff1a;参数校验 - 红茶的个人站点 (icexmoon.cn)从零开始 Spring B…

[RocketMQ] Broker asyncSendMessage处理消息以及自动创建Topic (十)

asyncSendMessage方法用来处理来自producer发送的消息。 文章目录 1.asyncSendMessage异步处理单条消息2.preSend准备响应命令对象2.1 msgCheck检查并自动创建topic2.1.1 createTopicInSendMessageMethod创建普通topic2.1.2 createTopicInSendMessageBackMethod创建重试topc2.1…

浅入浅出Java锁

前提 做分布式爬虫时&#xff0c;结合已有的架构&#xff0c;直接对某网站的详情页进行了爬取&#xff1b;尴尬的是&#xff0c;某网站需先采集列表页&#xff0c;之后才能采集详情页&#xff1b;这种防爬手段使用了用户行为监控&#xff0c;行为异常的访问直接就给屏蔽了。 对…

c++11 日期和时间工具-(std::chrono)

链接 std::chrono是C11引入的日期时间处理库&#xff0c;其中包含3种时钟&#xff1a; system_clock&#xff0c;steady_clock&#xff0c;high_resolution_clock。 定义于头文件 <chrono> std::chrono 库 system_clock steady_clock 链接 链接2 每一次调用time_…

解决go install github.com/mattn/goreman@latest安装报错

go install github.com/mattn/goremanlatest报错&#xff1a; [rootlocalhost ~]# go install github.com/mattn/goremanlatest go: github.com/mattn/goremanlatest: module github.com/mattn/goreman: Get "https://proxy.golang.org/github.com/mattn/goreman/v/list&…

现在都在说 Docker 好,为什么我一用就出现这么多问题?查了一宿才解决!

#配置国内源进行docker安装 报错 HTTP Error 404 - Not Found 原因&#xff1a;由于配置国内镜像源时&#xff0c;把地址写错了&#xff0c;导致后面安装docker提示HTTP Error 404 解决方法&#xff1a; 1&#xff09;进入到 /etc/yum.repos.d目录下 cd /etc/yum.repos.d l…

8. 查询每日新用户数

文章目录 题目需求思路一实现一题目来源 题目需求 从用户登录明细表&#xff08;user_login_detail&#xff09;中查询每天的新增用户数&#xff0c;若一个用户在某天登录了&#xff0c;且在这一天之前没登录过&#xff0c;则任务该用户为这一天的新增用户。 期望结果如下&am…

Baumer工业相机堡盟工业相机如何通过BGAPISDK进行定序器编程:根据每次触发信号移动感兴趣区域(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK进行定序器编程:根据每次触发信号移动感兴趣区域&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机BGAPISDK和定序器编程的技术背景Baumer工业相机通过BGAPISDK进行定序器编程功能1.引用合适的类文件2.Baumer工业相机通过BG…

采集发布到WordPress自定义参数

Wordpress有自定义设置的参数&#xff0c;一般是用户自行设置&#xff0c;或主题和插件扩展新增的自定义参数&#xff0c;要怎么发布&#xff1f; WordPress主题或插件扩展新增的自定义参数&#xff0c;一般是保存到数据库的wp_postmeta表中。 先去数据库中确定对应自定义参数…

设计消息模块的持久层

一、创建MessageDao类 在 com.example.emos.wx.db.dao 包中创建 MessageDao.java 类 Repository public class MessageDao {Autowiredprivate MongoTemplate mongoTemplate;public String insert(MessageEntity entity){Date sendTimeentity.getSendTime();sendTimeDateUtil.…

【day4】类和对象

#include <iostream> using namespace std;class Complex {int real;int vir; public:Complex(){}Complex(int a,int b):real(a),vir(b){}void show(){cout << real << "" << vir << "i" << endl;}//成员函数版的运算…

Java基础-lambda表达式

简化匿名内部类的书写 下面两种写法均可&#xff1b; Arrays.sort(arr, new Comparator<Integer>() {Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;} }); Arrays.sort(arr, (Integer o1, Integer o2) -> {return o1 - o2;} );函数式编程思想&…

山西电力市场日前价格预测【2023-07-01】

日前价格预测 预测明日&#xff08;2023-07-01&#xff09;山西电力市场全天平均日前电价为364.57元/MWh。其中&#xff0c;最高日前价格为451.88元/MWh&#xff0c;预计出现在21: 30。最低日前电价为309.59元/MWh&#xff0c;预计出现在13: 30。以上预测仅供学习参考&#xff…

LabVIEW开发工业物联网状态监测

物理对象的网络&#xff0c;允许在它们之间传输数据。信息通常保存在集中式云数据库中。由于物联网&#xff0c;我们现在可以从远处进行监控和感知。由于网络和通信的增加&#xff0c;越来越多的流程可能会自动化。 调度、维护管理和质量改进等关键领域的决策正受到大数据技术…