OpenCV运动分析和目标跟踪(4)创建汉宁窗函数createHanningWindow()的使用

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

算法描述

此函数计算二维的汉宁窗系数。
createHanningWindow是OpenCV中的一个函数,用于创建汉宁窗(Hann window)。汉宁窗通常用于频域处理中,可以减少边界效应并提高频率分辨率。在图像处理中,它通常用于频域滤波或特征提取等任务。

更多信息请参见(http://en.wikipedia.org/wiki/Hann_function)和(http://en.wikipedia.org/wiki/Window_function)。

下面给出一个示例:

// create hanning window of size 100x100 and type CV_32F
Mat hann;
createHanningWindow(hann, Size(100, 100), CV_32F);

汉宁窗(Hann window)是一种常用的窗函数,主要用于信号处理和图像处理等领域。它是一种平滑的窗口函数,可以减少边界效应(如吉布斯现象),并提高频谱分辨率。汉宁窗在频域处理中特别有用,例如在傅里叶变换前后应用以减少泄漏效应。

汉宁窗在以下场景中有广泛的应用:

  1. 频域滤波:在傅里叶变换前后应用汉宁窗可以减少频谱泄漏。
  2. 特征提取:在图像处理中,可以应用于图像的频域分析,减少边界效应。、
  3. 噪声去除:通过对频谱应用汉宁窗,可以有效地减少噪声的影响

函数原型

void cv::createHanningWindow	
(
	OutputArray 	dst,
	Size 	winSize,
	int 	type 
)		

参数

  • 参数dst 用于放置汉宁系数的目标数组。
  • 参数winSize 窗口大小的规格(宽度和高度都必须大于1)。
  • 参数type 创建的数组类型。

代码示例


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

int main()
{
    // 加载图像
    cv::Mat frame = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/sun2.jpg", cv::IMREAD_GRAYSCALE);
    if (!frame.data) {
        std::cout << "Could not open or find the image" << std::endl;
        return -1;
    }

    // 创建汉宁窗
    cv::Mat hannWindow;
    cv::createHanningWindow(hannWindow, frame.size(), CV_64F);

    // 使用 cv::minMaxLoc 找到最大值
    double minVal, maxVal;
    cv::minMaxLoc(hannWindow, &minVal, &maxVal);

    // 将汉宁窗转换为8位图像以便显示
    cv::Mat hannWindow8U;
    hannWindow.convertTo(hannWindow8U, CV_8U, 255.0 / (maxVal - minVal), -minVal * (255.0 / (maxVal - minVal)));

    // 显示原始图像
    cv::imshow("Original Image", frame);

    // 显示汉宁窗图像
    cv::imshow("Hanning Window", hannWindow8U);

    // 等待按键,以便查看图像
    cv::waitKey(0);

    // 关闭所有窗口
    cv::destroyAllWindows();

    // 保存结果
    cv::imwrite("hanning_window_result.jpg", hannWindow8U);

    return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

Prompt最佳实践|指定输出的长度

在OpenAI的官方文档中已经提供了[Prompt Enginerring]的最佳实践&#xff0c;目的就是帮助用户更好的使用ChatGPT 编写优秀的提示词我一共总结了9个分类&#xff0c;本文讲解第6个分类&#xff1a;指定输出长度 提供更多的细节要求模型扮演角色使用分隔符指定任务步骤提供样例…

翻页时钟 2.0-自动置顶显示,点击小时切换显示标题栏不显示标题栏-供大家学习研究参考

更新内容 自动置顶显示点击小时切换显示标题栏&#xff0c;&#xff08;显示标题栏后可移动时钟位置&#xff0c;鼠标拖动边框调整时钟大小&#xff09;不显示标题栏时&#xff0c;透明部分光标可穿透修正一个显示bu 下载地址&#xff1a; https://download.csdn.net/download…

24年蓝桥杯及攻防世界赛题-MISC-2

11 Railfence fliglifcpooaae_hgggrnee_o{cr} 随波逐流编码工具 分为5栏时,解密结果为:flag{railfence_cipher_gogogo} 12 Caesar rxms{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} mode1 #12: flag{you_have_learned_caesar_encryption} 随波逐流编码工具 13 base64 base64解…

powerbi如何修改卡片单位?

第一步&#xff1a;找到视觉对象--标注值 第二步&#xff1a;找到显示单位修改即可&#xff01;

谷歌论文提前揭示o1模型原理:AI大模型竞争或转向硬件

Open AI最强模型o1的护城河已经没有了&#xff1f;仅在OpenAI发布最新推理模型o1几日之后&#xff0c;海外社交平台 Reddit 上有网友发帖称谷歌Deepmind在 8 月发表的一篇论文内容与o1模型原理几乎一致&#xff0c;OpenAI的护城河不复存在。 谷歌DeepMind团队于今年8月6日发布…

服务监控插件全览:提升微服务可观测性的利器

Datadog 1. 概述与背景 简介&#xff1a;Datadog 是一个云监控和分析平台&#xff0c;它提供全面的监控解决方案&#xff0c;包括性能监控、故障排查、资源利用率优化等。Datadog 适用于各种规模的分布式系统&#xff0c;包括微服务架构、大数据平台、云原生应用等。目的&…

CSS的三种基本选择器

使用CSS控制网页格式有行内法&#xff0c;内嵌式&#xff0c;链接式&#xff0c;导入式等方法 这里将采用内嵌式的方法书写 内嵌法就是通过<style>标记将样式定义在HTML的文件头部中 1.标记选择器 标记选择器特点&#xff1a;定义了标记选择器之后&#xff0c;网页中…

Leetcode 93-复原 IP 地址

有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011.255.245”、“192.168.…

一问详解Unity下RTMP推送|轻量级RTSP服务|RTSP|RTMP播放模块说明

技术背景 好多开发者&#xff0c;对Unity下的模块&#xff0c;不甚了解&#xff0c;实际上&#xff0c;除了Windows/Linux/Android/iOS Native SDK&#xff0c;大牛直播SDK发布了Unity环境下的RTMP推流|轻量级RTSP服务&#xff08;Windows平台Linux平台Android平台&#xff09…

行人持刀检测数据集 voc yolo

行人持刀检测数据集 9000张 持刀检测 带标注 voc yolo 行人持刀检测数据集 数据集描述 该数据集旨在用于行人持刀行为的检测任务&#xff0c;涵盖了多种场景下的行人图像&#xff0c;特别是那些携带刀具的行人。数据集包含大量的图像及其对应的标注信息&#xff0c;可用于训练…

【ShuQiHere】 探索数据挖掘的世界:从概念到应用

&#x1f310; 【ShuQiHere】 数据挖掘&#xff08;Data Mining, DM&#xff09; 是一种从大型数据集中提取有用信息的技术&#xff0c;无论是在商业分析、金融预测&#xff0c;还是医学研究中&#xff0c;数据挖掘都扮演着至关重要的角色。本文将带您深入了解数据挖掘的核心概…

记录一题----计算机网络传输层

线路&#xff1a;TCP报文下放到物理层传输。 TCP报文段中&#xff0c;“序号”长度为32bit&#xff0c;为了让序列号不会循环&#xff0c;则最多能传输2^32B的数据&#xff0c;则最多能传输&#xff1a;2^32/1500B个报文 结果&#xff1a; 吞吐率一个周期内传输的数据/周期时间…

使用Webpack创建vue脚手架并搭建路由---详解

1.使用 vue 库 vue 是一个非常好用的 javascript 库&#xff0c;现在已经发行了 vue 3&#xff0c;我们可以直接导入使用库文件&#xff0c;也可以使用单文件&#xff08;SFC&#xff09;的形式&#xff0c;直接使用库文件会简单一点&#xff0c;我们先来试一下吧。 1.1安装 v…

探索AutoIt:自动化任务的Python魔法棒!

文章目录 探索AutoIt&#xff1a;自动化任务的Python魔法棒&#xff01;背景&#xff1a;为什么选择AutoIt&#xff1f;AutoIt库简介安装AutoIt库简单的库函数使用方法场景应用常见Bug及解决方案总结 探索AutoIt&#xff1a;自动化任务的Python魔法棒&#xff01; 背景&#x…

小阿轩yx-SaltStack部署与应用基础

小阿轩yx-SaltStack部署与应用基础 前言 当今数字化时代&#xff0c;大规模 IT 系统的管理已经成为一个复杂而繁琐的任务。为了提高系统管理的效率和准确性&#xff0c;自动化工具成为各企业不可或缺的一部分。Saltstack 作为一款强大的自动化和配置管理工具&#xff0c;在业…

文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计

一、介绍 使用Python作为开发语言&#xff0c;基于文本数据集&#xff08;一个积极的xls文本格式和一个消极的xls文本格式文件&#xff09;&#xff0c;使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于D…

rsync 全网备份

目录 1.前言 2.背景 3.备份的内容 4.备份方式 5.环境准备 6.步骤 7.rsync服务端调试 7.1配置 7.2创建目录并测试 8.客户端备份脚本 9.服务端脚本配置 10.增加校验功能 11.致谢 1.前言 在当今数字化的时代&#xff0c;数据的价值不言而喻。无论是企业的关键…

Linux中使用Docker构建Nginx容器完整教程

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

责任链模式实现规则校验

1、项目中责任链模式实战 我们使用责任链模式实现对订单中参数的校验&#xff0c;首先校验订单id是否为空&#xff0c;然后校验下单人是否为空&#xff0c;最后检验收获地址是否为空。业务的流程图如下所示&#xff1a; 针对上述的业务&#xff0c;我们使用责任链的模式来实现…

后端接收数组,集合类数据

文章目录 一. 请求行Path参数&#xff08;不建议&#xff09;二.数组接收&#xff08;不建议&#xff09;三.List集合接收&#xff08;建议&#xff09;四. GET请求既包含请求体又包含请求行 一. 请求行Path参数&#xff08;不建议&#xff09; DeleteMapping("/{ids}&quo…