OpenCV图像滤波(7)cv::getDerivKernels() 函数的使用

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

算法描述

函数返回用于计算空间图像导数的滤波系数。
该函数计算并返回用于空间图像导数的滤波系数。当 ksize=FILTER_SCHARR 时,生成 Scharr 3x3 核(参见 Scharr)。否则,生成 Sobel 核(参见 Sobel)。这些滤波器通常传递给 sepFilter2D 或其他函数。

这些系数可以用于计算图像的梯度,这对于边缘检测和其他基于梯度的图像处理任务非常重要。

函数原型

void cv::getDerivKernels	
(
	OutputArray 	kx,
	OutputArray 	ky,
	int 	dx,
	int 	dy,
	int 	ksize,
	bool 	normalize = false,
	int 	ktype = CV_32F 
)		

参数

  • 参数kx 输出矩阵,包含行滤波系数。其类型为 ktype。
  • 参数ky 输出矩阵,包含列滤波系数。其类型为 ktype。
  • 参数dx 关于 x 的导数阶数。
  • 参数dy 关于 y 的导数阶数。
  • 参数ksize 孔径大小。它可以是 FILTER_SCHARR、1、3、5 或 7
  • 参数normalize 标志,指示是否归一化(缩放)滤波系数。理论上,系数应该具有分母 =2 * ksize^2 - dx - dy - 2。如果你打算过滤浮点图像,你可能会使用归一化的内核。但是,如果你计算 8 位图像的导数,将结果存储在 16 位图像中,并希望保留所有的小数位,你可能想要设置 normalize=false。
  • 参数ktype 这是指滤波系数的数据类型。它可以是 CV_32F(32 位浮点数)或 CV_64F(64 位浮点数)。

示例代码

#include <iostream>
#include <opencv2/opencv.hpp>

int main( int argc, char** argv )
{
    // 读取图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/erik.jpg", cv::IMREAD_GRAYSCALE );

    if ( src.empty() )
    {
        std::cout << "Error: Image cannot be loaded!" << std::endl;
        return -1;
    }
    cv::Size sz2Sh( 400, 600 );

    cv::resize( src, src, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );

    imshow( "原图", src );

    cv::Mat dst;

    cv::Mat kx, ky;
    cv::getDerivKernels( kx, ky, 1, 0, 3, false );
    cv::sepFilter2D( src, dst, src.depth(), kx, ky );
    imshow( "sepFilter2D", dst );

    cv::waitKey( 0 );
    return 0;
}

运行结果

参数是cv::getDerivKernels( kx, ky, 1, 0, 3, false )时:
在这里插入图片描述

参数是cv::getDerivKernels( kx, ky, 1, 0, 5, false )时:
在这里插入图片描述

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

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

相关文章

【Python机器学习】树回归——复杂数据的局部性建模

线性回归包含一些强大的方法&#xff0c;但这些方法创建的模型需要拟合所有的样本&#xff08;局部加权线性回归除外&#xff09;&#xff0c;当数据拥有众多特征并且特征之间关系十分复杂时&#xff0c;构建全局模型的想法就显得很困难&#xff0c;也略显笨拙。而且&#xff0…

MySql 5.7.1 分区的实践

在性能优化中&#xff0c;Mysql 进行分区&#xff0c;能有效提高查询效率&#xff0c;因此开始百度了起来。但是结果总不是那么一番风顺的。如今使用 uuid 作为主键的情况已是主流&#xff0c;因此在给表增加分区时&#xff0c;出现了如下错误&#xff1a; 错误&#xff1a; A …

FishSpeech 实测,免费语音克隆神器,5分钟部署实战,让川普给你来段中文绕口令?

拍短视频&#xff0c;开始的时候是真人语音&#xff0c;之后是电脑配音&#xff0c;今年年初剪映上线了克隆语音&#xff0c;很多人都用起来了。 想要克隆别人的语音怎么办&#xff1f; 之前需要用 GPT-SoVITS 训练声音模型&#xff0c;操作复杂&#xff0c;对电脑配置要求较…

【算法设计】深入理解波兰表达式与逆波兰表达式

文章目录 介绍1. 波兰表达式&#xff08;Prefix Notation&#xff09;2. 逆波兰表达式&#xff08;Postfix Notation&#xff09;3. 比较与优劣4. 简单示例5. 实例演示6. 应用场景和案例7. 中缀表达式转后缀表达式8. 结论 更多相关内容可查看 应用场景&#xff1a;Excel自定义公…

Mozilla Firefox侧边栏和垂直标签在131 Nightly版本中开始试用

垂直选项卡和全新的侧边栏体验现已在Mozilla Firefox Nightly 131 中提供。这一更新备受社区期待和要求&#xff0c;我们期待看到它如何提高您的浏览效率和工作效率。如果您想体验一下这项正在进行中的工作&#xff0c;请这样操作&#xff1a; 更新到最新的Nightly版 转到设置…

LeetCode刷题笔记第49题:字母异位词分组

LeetCode刷题笔记第49题&#xff1a;字母异位词分组 题目&#xff1a; 想法&#xff1a; 遍历列表中的所有字符串&#xff0c;将字符串中字符进行排序并作为字典的键&#xff0c;并将原字符串做为值保存&#xff0c;最终输出字典的值就是最终的答案。 class Solution:def gr…

MySQL 日志表改造为分区表

文章目录 前言1. 分区表改造方法2. 操作步骤2.1 调整主键2.2 无锁变更2.3 回滚策略 3. 分区表维护3.1 创建分区3.2 删除分区3.3 分区表查询 后记 前言 业务有一张日志表&#xff0c;只需要保留 3 个月的数据&#xff0c;仅 3 月的数据就占用 80G 的存储空间&#xff0c;如果不…

二维数组指针,指针数组,指针函数

指针 操作 二维字符型数组 1、 首先理解二维数组指针 int a[3][4]; 第一步&#xff0c;确定基类型&#xff1a;上面的数组从本质上讲&#xff0c;是一维数组的数组&#xff0c;写成int[4] a[3]可以更好的理解&#xff0c;a[3]是一个一维数组&#xff0c;其数组…

【机器学习sklearn实战】岭回归、Lasso回归和弹性网络

一 sklean中模型详解 1.1 Ride regression 1.2 Lasso regression 1.3 ElasticNet 二 算法实战 2.1 导入包 import numpy as np import pandas as pd from sklearn import datasets from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.linear…

【开源分享】PHP在线客服系统网站源码 附搭建教程

在互联网时代&#xff0c;用户对于线上服务的便捷性和高效性要求越来越高。官网在线客服系统作为企业与用户之间实时沟通的工具&#xff0c;不仅能够提高用户满意度&#xff0c;还能够有效促进业务转化。然而&#xff0c;市面上的在线客服系统大多价格昂贵且功能单一&#xff0…

[论文翻译] LTAChecker:利用注意力时态网络基于 Dalvik 操作码序列的轻量级安卓恶意软件检测

LTAChecker: Lightweight Android Malware Detection Based on Dalvik Opcode Sequences using Attention Temporal Networks 摘要&#xff1a; Android 应用程序已成为黑客攻击的主要目标。安卓恶意软件检测是一项关键技术&#xff0c;对保障网络安全和阻止异常情况至关重要。…

1.redis7安装

安装&#xff1a; redis下载地址&#xff1a; Index of /releases/ 本次使用的版本为7.0.0. yum install gcc-c 下载上传到 /opt/redis 目录&#xff0c;tar -zxvf redis-7.0.0.tar.gz 解压缩 cd redis-7.0.0 执行make 执行make install. 默认会安装到 /usr/local/bi…

超融合一体机是什么意思?有什么好处

超融合一体机是什么意思&#xff1f;超融合一体机是一种集成了计算、存储和网络功能的一体化硬件设备。通过软件定义的方式&#xff0c;提供了高度集成、高可用性、高性能的数据中心解决方案。这种一体机将多个物理服务器、存储设备和网络设备整合在一个机箱内&#xff0c;通过…

轻空间成功完成陕西渭南砂石料场气膜仓项目

轻空间&#xff08;江苏&#xff09;膜结构科技有限公司凭借卓越的技术实力与丰富的项目经验&#xff0c;成功完成了陕西省渭南市砂石料场气膜仓的建设。这一项目的顺利交付&#xff0c;不仅满足了当地对高效仓储的需求&#xff0c;也为西北地区的仓储设施建设树立了标杆。 陕西…

twoPhaseEulerFoam 全解读之二(转)

twoPhaseEulerFoam 全解读之二&#xff08;转&#xff09; 本系列将对OpenFOAM-2.1.1 中的 twoPhaseEulerFoam 求解器进行完全解读&#xff0c;共分三部分&#xff1a;方程推导&#xff0c;代码解读&#xff0c;补充说明。本篇对 twoPhaseEulerFoam 中的 UEqn.H 和 pEqn.H 中的…

C# 高级数据处理:深入解析联接 Join 与 GroupJoin 操作的应用与实例演示

文章目录 一、联接概述二、Join 操作符1. Join 操作符的基本用法2. Join 操作符示例 三、GroupJoin 操作符1. GroupJoin 操作符的基本用法2. GroupJoin 操作符示例 总结 在数据处理中&#xff0c;联接&#xff08;Join&#xff09;操作是一种非常常见的需求&#xff0c;它允许我…

C语言典型例题30

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.7 从银行贷了一笔款d&#xff0c;准备每月还款额为p&#xff0c;月利率为r&#xff0c;计算多少个月能还清。 设d30000元&#xff0c;p6000元&#xff0c;r1%。对求得的月份取小数点后一位&#xff0c;对第二…

【深度学习与NLP】——RNN架构解析

目录 RNN架构解析 1.1 认识RNN模型 学习目标 什么是RNN模型 RNN模型的作用 RNN模型的分类 小节总结 1.2 传统RNN模型 学习目标 传统RNN的内部结构图 小节总结 RNN架构解析 1.1 认识RNN模型 学习目标 了解什么是RNN模型.了解RNN模型的作用.了解RNN模型的分类. 什么…

如何使用Jmeter对HTTP接口进行压力测试?

我们不应该仅仅局限于某一种工具&#xff0c;性能测试能使用的工具非常多&#xff0c;选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验&#xff0c;也算略有小成&#xff0c;任何性能测试&#xff08;如压力测试、负载测试、疲劳强度测试等&#…