python - numpy函数.fft.fft2()给出错误: “cannot do a non-empty take from an empty axis”(opencv,matplotlib,numpy,python27)

标签 python opencv numpy matplotlib fft

我正在尝试根据发现的tutorial对图像进行傅立叶变换。

当我尝试运行我的代码时,出现以下错误:

Error

在复制的教程中,我没有做任何更改。所以我认为我的库出了点问题。我卸载了Python和所有库,然后再次安装。但是错误仍然显示。

我的代码:

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

img = cv2.imread('C:\Documents\data128.jpg',0)

f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))

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()

我在Windows 10上使用Python 2.7。不胜感激!

最佳答案

发生错误是因为尚未加载图像。这样做的原因是找不到该文件。

您可以在python字符串中使用反斜杠指定文件名。但是,python字符串中的反斜杠具有特殊含义,需要转义。另请参见here

可能的解决方案(假设文件确实存在):

  • 转义反斜杠
    img = cv2.imread('C:\\Documents\\data128.jpg',0)
    
  • 使用原始字符串
    img = cv2.imread(r'C:\Documents\data128.jpg',0)
    
  • 使用单斜杠
    img = cv2.imread('C:/Documents/data128.jpg',0)
    
  • 关于python - numpy函数.fft.fft2()给出错误: “cannot do a non-empty take from an empty axis”(opencv,matplotlib,numpy,python27),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41147483/

    相关文章:

    python - Python 中的 __properties__ 是什么?

    python - 是否可以禁用右键单击并关闭消息框 ctype python 上的所有内容?

    python - 从 metpy.plots 导入时 cTables 未定义?

    c++ - 用于编译多个 C++ 文件的 BASH 脚本 - OpenCV

    opencv - 如何在opencv中根据深度颜色分割连通区域

    python - Pandas 或其他 Python 应用程序根据其他两列规则生成具有 1 到 n 值的列

    Python:距离直线最近的点

    python - numpy.polyfit 没有关键字 'cov'

    Python 多处理 : is it possible to have a pool inside of a pool?

    python - 显示网络摄像头序列 TkInter