我试图得到一幅图像的fft,然后用matplotlib绘制该fft的fraq。但是,此错误消息:
"ValueError:x和y不能大于2-D,但具有形状(2592,)和(2592, 1, 3)"。
我试图重塑我的np。这样排列:
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import tkinter
from scipy.fftpack import fft, fft2, fftshift
resim = Image.open(r'yeni.jpg')
resim_data = np.asarray(resim)
fourier = fft2(resim_data)
#psd2D = np.abs(fourier)**2
plt.figure()
plt.semilogy(abs(fourier).astype(np.uint8))
plt.title('fourier transform fraq')
plt.show()
错误消息BLELOW:
回溯(最近一次调用):
文件“myfrouier.py”,第21行,in
plt符号学(abs(fourier).astype(np.uint8))文件
"/home/aybarsyildiz/. local/lib/python3.6/site-pack/matplotlib/pyplot.py",
第2878行,在半部曲中返回gca()。半部曲(*args,**kwargs)
File"/home/aybarsyildiz/. local/lib/python3.6/site-pack/matplotlib/axes/_axes.py",第1844行,在半部曲l=self.plot(*args,**kwargs)File"/home/aybarsyildiz/. local/lib/python3.6/site-pack/matplotlib/init.py"中,第1810行,在内部返回func(ax,*args,**kwargs)中
File"/home/aybarsyildiz/. local/lib/python3.6/site-pack/matplotlib/axes/_",第1611行,在自身行的绘图中。_get_lines(*args,**kwargs):
File"/home/aybarsyildiz/. locallib/python3.6/site-pack/matplotlib/axes/_base.py",第370行,在_plot_argsx中,y=自己。_xy_from_xy(x, y)File"/home/aybarsyildiz/. local/lib/python3.6/site-pack/matplotlib/axes/_base.py",第234行,在_xy_from_xy"形状{}和{}"。格式(x.shape,y.shape))值错误:x和y不能大于2-D,但有形状(2592,)和(2592, 1, 3)
你似乎没有必要的2d数组,但有一个额外的三维数组。您必须选择要对该维度执行的操作:
>
如果只需要一个通道的信息,可以选择只保留第n维的值:
n = 1
resim_data = resim_data[:, :, n]
计算第三维所有值的平均值
resim_data = resim_data.mean(axis=-1)
为第三维的所有值选择最大值
resim_data = resim_data.max(axis=-1)
...
示例:
我将您的代码用于244x244像素的示例图像,得到了与您类似的错误:
ValueError:x和y不能大于2-D,但具有形状(244,)和(244,244,4)
我只对第一个通道感兴趣,所以我放弃了第三维中所有其他不必要的值:
resim_data = np.asarray(resim)
print(resim_data.shape)
n = 0
resim_data = resim_data[:, :, n]
print(resim_data.shape)
打印:
(244, 244, 4)
(244, 244)
如您所见,resim_data
不再有第三维度。之后没有错误。
目标 在这一节中,我们将学习 使用OpenCV查找图像的傅立叶变换 利用Numpy中的FFT功能 傅立叶变换的一些应用 我们将学到以下函数:cv2.dft(),cv2.idft()等 理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,可以使用2D离散傅里叶变换(DFT)来查找频域。被称为快速傅立叶变换(FFT)的快速算法被用于DFT的计算。有关这些的细节可以在任何图像处理或信号处理的教科书中
本文向大家介绍Opencv实现傅里叶变换,包括了Opencv实现傅里叶变换的使用技巧和注意事项,需要的朋友参考一下 傅里叶变换将图像分解成其正弦和余弦分量,它将图像由空域转换为时域。任何函数都可以近似的表示为无数正弦和余弦函数的和,傅里叶变换就是实现这一步的,数学上一个二维图像的傅里叶变换为: 公式中,f是图像在空域的值,F是频域的值。转换的结果是复数,但是不可能通过一个真实图像和一个复杂的图
目标 在本节中,我们将学习 使用OpenCV查找图像的傅立叶变换 利用Numpy中可用的FFT函数 傅立叶变换的某些应用程序 我们将看到以下函数:cv.dft(),cv.idft()等 理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。关于这些的详细信息可以在任何图像处理或信号处理教科书中找
我试图画一系列给定坐标的矩形,这只是一个x和y值的列表。 这是我的密码: 此代码应绘制类似以下内容的形状: 相反,它画的东西没有连贯的形状。
我目前正在使用libgdx为我的Android游戏开发一个对话框窗口。此对话框窗口包含标签和按钮的集合,但也应该包含图像。该图像表示“剩余健康指示器”,即带有指示玩家健康的符号的空指示器。这个指示器必须用代表剩余健康量的彩色矩形填充(见下面的屏幕截图)。 为了在libgdx的对话框中呈现这一点,我必须绘制一个图像和一个彩色矩形(红色矩形表示剩余健康的实际数量)。我知道对话框支持图像的渲染,但我不知
我有一个8000 Hz采样率的单通道波。 我需要实时分析5赫兹到300赫兹之间的频率,重点是10到60赫兹的信号。 我最初的想法是将8000 Hz的样本放入缓冲区,收集大约32000个样本。然后,在其上运行32000窗口大小的傅立叶变换。 这里的理由是,对于低频信号,您需要更大的窗口大小(对吗?) 然而,如果我试图实时显示这个信号,那么AudioAnalyzerNode似乎不是一个好的选择。我知道