OpenCV는 푸리에 변환 및 역 변환을 구현합니다.

파이 소개: 

반환 결과 = cv2.dft(원본 이미지, 변환된 로고)

반환 결과: 이중 채널이며 첫 번째 채널은 결과의 실제 부분이고 두 번째 채널은 결과의 허수 부분입니다. 원본
이미지: 입력 이미지는 먼저 np.float32 형식으로 변환되어야 합니다. np.float32 (img)
변환 플래그: flags = cv2.DFT_COMPLEX_OUTPUT, 복잡한 배열 출력

 

코드 부분:

import numpy as np
import cv2    #opencv-python
import matplotlib.pyplot as plt

img = cv2.imread("../images/chenqiaoen.jpg",0)
#dft函数傅里叶变换
dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
#移动左上角低频到图像中心
dftShift = np.fft.fftshift(dft)
#傅里叶变换结果是双通道,我们需要把双通道转换为三通道灰度图像,20*转换到0-255的图像
result = 20*np.log(cv2.magnitude(dftShift[:,:,0],dftShift[:,:,1]))

plt.subplot(121)
plt.imshow(img,cmap="gray")
plt.title("original")
plt.axis("off")

plt.subplot(122)
plt.imshow(result,cmap = "gray")
plt.title("result")
plt.axis("off")
plt.show()

 

효과. .

Opencv 역 푸리에 변환:

암호:

import numpy as np
import cv2    #opencv-python
import matplotlib.pyplot as plt

img = cv2.imread("../images/chenqiaoen.jpg",0)
#dft函数傅里叶变换
dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
#移动左上角低频到图像中心
dftShift = np.fft.fftshift(dft)
#再从中间移动低频左上角
ishift = np.fft.ifftshift(dftShift)
#傅里叶逆变换
iImg=cv2.idft(ishift)
#需要把2通道的转换为三通道的灰度图像,转换成8位的位图
iOmg=cv2.magnitude(iImg[:,:,0],iImg[:,:,1]);


plt.subplot(121)
plt.imshow(img,cmap="gray")
plt.title("original")
plt.axis("off")

plt.subplot(122)
plt.imshow(iOmg,cmap = "gray")
plt.title("reverse")
plt.axis("off")
plt.show()

 효과:

추천

출처blog.csdn.net/chehec2010/article/details/129900568