python opencv傅里叶变换直方图显示
时间: 2023-05-24 08:06:03 浏览: 135
以下是Python OpenCV傅里叶变换直方图显示的示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', 0)
# 傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))
# 直方图
hist, bins = np.histogram(magnitude_spectrum.ravel(), 256, [0,256])
# 显示图像和直方图
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.plot(hist)
plt.title('Magnitude Spectrum'), plt.xlim([0,256]), plt.ylim([0,np.max(hist)])
plt.show()
```
该代码将读取名为 "image.jpg" 的图像,进行傅里叶变换,并绘制该结果的幅度谱直方图。注意,该示例使用Matplotlib库来显示图像和直方图。必要时,请确保安装了此库。
如果你想在OpenCV中显示直方图,可以使用cv2.calcHist()函数来计算并绘制直方图。以下是显示直方图的示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像并转换为灰度
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist = cv2.calcHist([gray], [0], None, [256], [0,256])
# 显示直方图
plt.plot(hist)
plt.xlim([0,256]), plt.ylim([0,np.max(hist)])
plt.show()
```
该代码将读取名为 "image.jpg" 的图像,并绘制其灰度直方图。注意,此示例使用Matplotlib库来显示直方图。如果您使用此方法,请确保计算的直方图与您的需求匹配。
阅读全文