参考伯乐在线的一篇文章,做图像的傅里叶变换。在PyCharm中安装cv2时出错,如下图:
根据提示建议在命令行中执行命令pip install cv2也依然是No matching distribution found for cv2.注意到pip可以更新,但这不是问题所在。然而,将相同的py文件添加在venv文件夹中没有在import时报错。venv是virtual environment的缩写。查到的资料是这样的:每个应用需要的运行环境经常不同(包的版本/python版本等),所以需要用virtualenv创建一套属于这个程序的“隔离”的Python运行环境。而且系统Python环境不会被修改,保持干净。可打包后移动目录,但无法跨平台。注意当前项目的python解释器是哪个,一定要设置成虚拟环境中的python。virtualenv 创建的虚拟环境与主机的 Python 环境完全无关, 你主机配置的库不能在 virtualenv 中直接使用。 你需要在虚拟环境中利用 pip install 再次安装配置后才能使用。
注意到解释器也根据工程有不同的版本,区别在安装了哪些模块。当在venv中换了一个解释器,cv2依然安装失败,但程序的结果正确。
#!/usr/bin/env.python import cv2 as cv import numpy as np from matplotlib import pyplot as plt img = cv.imread('Joseph_Fourier_250.jpg', 0) f = np.fft.fft2(img) # 快速傅里叶变换算法得到频率分布 fshift = np.fft.fftshift(f) # 默认结果中心点位置是在左上角,转移到中间位置 fimg = np.log(np.abs(fshift)) # fft 结果是复数,求绝对值结果才是振幅 fimg0=np.log(np.abs(f)) # 展示结果 plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Fourier') plt.subplot(132), plt.imshow(fimg0, 'gray'), plt.title('Fourier Fourier') #中心位移之前的频谱 plt.subplot(133), plt.imshow(fimg, 'gray'), plt.title('Fourier Fourier-shift') #中心位移之后的频谱,但坐标轴没有变化,此时中心的频率应该为0 plt.show()
傅里叶变换得到的频谱,频率从0到奈奎斯特频率(数字图像可被编码的最高频率,与分辨率、像素大小有关)