2016-12-14 27 views
-1

我試圖按照tutorial fourier轉換圖像找到。numpy函數.fft.fft2()給出一個錯誤:「不能從一個空軸進行非空取樣」(opencv,matplotlib,numpy,python27)

當我嘗試運行我的代碼將出現以下錯誤:

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

我使用Python 2.7在Windows 10.任何幫助表示讚賞!

+0

什麼是'img.shape'?圖像是否正確讀取?錯誤發生在'f = np.fft ...'這一行,所以這個函數的輸入有問題。 – Benjamin

+0

此外,您的鏈接不起作用。 – Benjamin

回答

0

發生此錯誤是因爲圖像尚未加載。原因是該文件沒有找到。

您可以在python字符串中使用反斜槓指定文件名。然而,Python字符串中的反斜槓具有特殊含義,需要轉義。另見here

可能的解決方案(假設該文件確實存在):

  1. 逃生反斜線

    img = cv2.imread('C:\\Documents\\data128.jpg',0) 
    
  2. 使用原始字符串

    img = cv2.imread(r'C:\Documents\data128.jpg',0) 
    
  3. 使用單斜槓

    img = cv2.imread('C:/Documents/data128.jpg',0) 
    
相關問題