DCT转换后IDCT出现的不是原图是一张全白图片
import cv2
import numpy as np
import matplotlib.pyplot as plt
try:
img = cv2.imread(r'C:\Users\www09\Desktop\so\original.png', cv2.IMREAD_COLOR)
if img is None:
raise FileNotFoundError('ファイルが見つかりません')
img = cv2.imread(r'C:\Users\www09\Desktop\so\original.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow('sample', img)
img = img.astype('float')
img = np.float32(img)
img_dct = cv2.dct(img)
cv2.imshow('sample01', img_dct)
img_dct_log = np.log(abs(img_dct))
img_recor2 = cv2.idct(img_dct)
cv2.imshow('sample02', img_recor2)
cv2.waitKey(0)
cv2.destroyAllwindows()
except FileNotFoundError as e:
print(e)
img = img.astype('float')
img = np.float32(img)
这里是不是写的有问题,opencv图像和np操作的数组是不一样的数据结构,建议参考这个博文改一下。
https://www.cnblogs.com/softec/archive/2010/03/16/1687637.html
复原后的图片需要转换成uint8后再显示,
在cv2.imshow('sample02', img_recor2) 这一行之前需要添加
img_recor2=np.uint8(img_recor2)