图像处理中的通信原理——冈萨雷斯读书笔记(二)

时间:2021-10-12 17:53:00

参考伯乐在线的一篇文章,做图像的傅里叶变换。在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到奈奎斯特频率(数字图像可被编码的最高频率,与分辨率、像素大小有关)