首页 > 其他分享 >opencv学习笔记(十一)

opencv学习笔记(十一)

时间:2023-06-25 12:55:29浏览次数:45  
标签:十一 plt img dft cv2 笔记 opencv np 傅里叶

傅里叶变换:

作用:

  • 高频:变化剧烈的灰度分量,例如边界;
  • 低频:变化缓慢的灰度分量,例如大海

滤波:

  • 低通滤波器:只保留低频,会使图像模糊
  • 高通滤波器:只保留高频,会使图像细节增强

opencv中主要就是 cv2.dft() 和c v2.idft() ,输入图像需要先转换为np.floa32的格式;

得到的结果中,频率为0的部分会在左上角,通常需要转换到中心位置,可以通过shift变换来实现

cv2.dft() 返回的结果是双通道的(实部, 虚部),通常还要转换成图像格式才能展示(0,255)

"""傅里叶变换

import cv2
from matplotlib import pyplot as plt
import numpy as np

def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img = cv2.imread('C:/Users/hellou/Desktop/self-image.jpg',0)
img = cv2.resize(img,(600,600))

img_float32 = np.float32(img)

dft = cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT)#执行傅里叶变换
# #将低频全部转换到中心位置,越高频越往外发散
#参数说明: img表示输入的图片, cv2.DFT_COMPLEX_OUTPUT表示进行傅里叶变化的方法
dft_shift = np.fft.fftshift(dft)
#得到灰度图能表示的形式
'''np.fft.fftshift(img)  将图像中的低频部分移动到图像的中心

参数说明:img表示输入的图片'''
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#对两个通道进行转换,但转化完的结果是非常小的数值,所以通过上面的公式映射到0到255之间

plt.subplot(121),plt.imshow(img, cmap='gray')
plt.title('Input Image'),plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'),plt.xticks([]),plt.yticks([])
plt.show()

""" cv2.magnitude(x, y) 将sqrt(x^2 + y^2) 计算矩阵维度的平方根

参数说明:需要进行x和y平方的数

    np.fft.ifftshift(img) # 进图像的低频和高频部分移动到图像原来的位置

参数说明:img表示输入的图片

    cv2.idft(img) # 进行傅里叶的逆变化

参数说明:img表示经过傅里叶变化后的图片"""

 

标签:十一,plt,img,dft,cv2,笔记,opencv,np,傅里叶
From: https://www.cnblogs.com/hellou/p/17502662.html

相关文章

  • 函数对象与闭包(笔记整理)
    一、函数对象1.什么是函数对象函数对象是指:将函数作为变量保存在内存中的一种对象。就是把函数当成变量去使用,就是在函数调用阶段,将调用的函数赋一个变量名definner():print('函数名也是不加括号,其实就是一个地址')#print(inner)#<functioninnerat0x7f80180......
  • 装饰器(笔记整理)
    一、装饰器介绍为何要用装饰器Python中的装饰器是一种语法糖,可以在运行时,动态的给函数或类添加功能。装饰器本质上是一个函数,使用**@+函数名**就是可实现绑定给函数的第二个功能。将一些通用的、特定函数的功能抽象成一个装饰器,可以重复利用这些功能什么是装饰器......
  • PaddleOCR学习笔记1
    尝试使用PaddleOCR方法,如何使用自定义的模型方法,参数怎么配置,图片识别尝试简单提高识别率方法。目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一,测试识别图片:1.png:正确文本内容为“哲学可以帮助辩别现代科技创新发展的方向” 二,测试代码:paddleocr_test2.py:结......
  • 随笔(二十一)『docker 安装 XXL-JOB』
    1、拉取镜像dockerpullxuxueli/xxl-job-admin:2.3.12、数据库脚本https://gitee.com/xuxueli0323/xxl-job/blob/2.3.1/doc/db/tables_xxl_job.sql3、挂载目录mkdir-p/mydata/xxl-job/data4、创建并启动容器dockerrun-ePARAMS="--spring.datasource.url=jdbc:mysq......
  • 笔记本输入python无提示、也无报错(不提示“不是内部或外部命令,也不是可运行的程序”)
    最近在安装Python的时候发生了很奇怪的现象(安装前):从命令行执行python并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令wherepython显示C:\Users\quxw\AppData\Local\Microsoft\WindowsApps\python.exe,如下......
  • 学习笔记-Java动态代理的简单使用
    代理模式一种设计模式简单地说,在代理模式中存在三个角色用户代理被代理的对象用户调用代理,代理去调用被代理的对象以此来实现功能的增强动态代理在java中有两种实现方法JDK中的Proxy类CGLIBJDK中的Proxy类步骤实现InvocationHandler接口......
  • spring源码笔记
    Bean创建流程获取对象的BeanDefinition通过反射创建空对象填充属性调用init方法  Bean创建关键方法(按顺序)getBeandoGetBeancreateBeandoCreateBeancreateBeanInstancepopulateBean  解决循环依赖:三级缓存循环依赖原因单例,每个类只有一个对象。A引用B,B又......
  • 系统架构设计师笔记第22期:软件可靠性建模
    软件可靠性建模是指通过分析软件系统的特征和行为,预测其可能出现的故障和失效情况,从而评估软件系统的可靠性和安全性。软件可靠性建模通常使用统计方法和数学模型,以定量分析软件系统的可靠性和安全性。以下是一些常见的软件可靠性建模方法:故障树分析(FTA):FTA是一种演绎推理方法,通过识......
  • 【js学习笔记四】数组双重去重的方式三filter
     目录前言导语运行结果总结前言   我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语   数组......
  • 【js学习笔记五】数组双重去重的方式四先排序在对比
     目录前言导语 代码部分运行结果总结前言   我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语......