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

  • 操作系统: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)

下面给出一个示例:

cpp 复制代码
// create hanning window of size 100x100 and type CV_32F
Mat hann;
createHanningWindow(hann, Size(100, 100), CV_32F);

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

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

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

函数原型

cpp 复制代码
void cv::createHanningWindow	
(
	OutputArray 	dst,
	Size 	winSize,
	int 	type 
)		

参数

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

代码示例

cpp 复制代码
#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;
}

运行结果

相关推荐
Leo.yuan9 分钟前
数据湖是什么?数据湖和数据仓库的区别是什么?
大数据·运维·数据仓库·人工智能·信息可视化
仙人掌_lz30 分钟前
如何打造一款金融推理工具Financial Reasoning Workflow:WebUI+Ollama+Fin-R1+MCP/RAG
人工智能·搜索引擎·ai·金融·llm·rag·mcp
MILI元宇宙33 分钟前
纳米AI搜索与百度AI搜、豆包的核心差异解析
人工智能·百度
SpikeKing43 分钟前
LLM - LlamaFactory 的大模型推理 踩坑记录
人工智能·llm·llamafactory
marteker1 小时前
年度峰会上,抖音依靠人工智能和搜索功能吸引广告主
人工智能·搜索引擎
飞哥数智坊1 小时前
AI编程实战:生成结果不合心意,1个简单思路帮你破解
人工智能·cursor
华清远见成都中心1 小时前
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
人工智能·缓存·语言模型
hao_wujing1 小时前
基于梯度的中毒攻击
大数据·人工智能
Lethehong2 小时前
Gemini 2.5 Pro (0605版本) 深度测评与体验指南
人工智能·chatgpt·googlecloud
全栈小52 小时前
【AI】从0开始玩转混元3D⼤模型,如何让一张静态实物图片一键转为3D实物图,大模型都表示服了,超级简单易上手,快来试试!
人工智能·3d·腾讯·混元达3d大模型·腾讯混元3d大模型