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;
}

运行结果

相关推荐
拾零吖8 分钟前
李宏毅 Deep Learning
人工智能·深度学习·机器学习
华芯邦10 分钟前
广东充电芯片助力新能源汽车车载系统升级
人工智能·科技·车载系统·汽车·制造
时空无限1 小时前
说说transformer 中的掩码矩阵以及为什么能掩盖住词语
人工智能·矩阵·transformer
查里王1 小时前
AI 3D 生成工具知识库:当前产品格局与测评总结
人工智能·3d
武子康2 小时前
AI-调查研究-76-具身智能 当机器人走进生活:具身智能对就业与社会结构的深远影响
人工智能·程序人生·ai·职场和发展·机器人·生活·具身智能
小鹿清扫日记2 小时前
从蛮力清扫到 “会看路”:室外清洁机器人的文明进阶
人工智能·ai·机器人·扫地机器人·具身智能·连合直租·有鹿巡扫机器人
fanstuck2 小时前
Prompt提示工程上手指南(六):AI避免“幻觉”(Hallucination)策略下的Prompt
人工智能·语言模型·自然语言处理·nlp·prompt
zhangfeng11333 小时前
win7 R 4.4.0和RStudio1.25的版本兼容性以及系统区域设置有关 导致Plots绘图面板被禁用,但是单独页面显示
开发语言·人工智能·r语言·生物信息
DogDaoDao3 小时前
神经网络稀疏化设计构架方法和原理深度解析
人工智能·pytorch·深度学习·神经网络·大模型·剪枝·网络稀疏
西猫雷婶4 小时前
pytorch基本运算-Python控制流梯度运算
人工智能·pytorch·python·深度学习·神经网络·机器学习