前提・実現したいこと
画像の2次元フーリエ変換を行い、ハイパスフィルタによってエッジ画像を作成したい
発生している問題・エラーメッセージ
TypeError Traceback (most recent call last) <ipython-input-21-679f5a4e9e7b> in <module> 23 print(ccol) 24 ---> 25 fshift[crow-30.0:crow+30.0, ccol-30.0:ccol+30.0] = 0.0 26 f_ishift = np.fft.ifftshift(fshift) 27 img_back = np.fft.ifft2(f_ishift) TypeError: slice indices must be integers or None or have an __index__ method
該当のソースコード
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('200901img/up003_h.tif',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() ''' rows, cols = img.shape crow,ccol = rows/2 , cols/2 print(crow) print(ccol) fshift[crow-30.0:crow+30.0, ccol-30.0:ccol+30.0] = 0.0 f_ishift = np.fft.ifftshift(fshift) img_back = np.fft.ifft2(f_ishift) img_back = np.abs(img_back) ''' plt.subplot(131),plt.imshow(img, cmap = 'gray') plt.title('Input Image'), plt.xticks([]), plt.yticks([]) plt.subplot(132),plt.imshow(img_back, cmap = 'gray') plt.title('Image after HPF'), plt.xticks([]), plt.yticks([]) plt.subplot(133),plt.imshow(img_back) plt.title('Result in JET'), plt.xticks([]), plt.yticks([]) plt.show() '''
試したこと
自分の写真をOpenCVの公式HPのソースコードをそのまま使用して画像処理しようとしたのですが、うまくいきません
fshift[crow-30.0:crow+30.0, ccol-30.0:ccol+30.0] = 0.0の部分がHPでは30、0だったので、.0を付けてみた程度です。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/03 06:34
2020/09/03 06:38
2020/09/03 06:40