如何使用 OpenCV Python 查找图像的离散余弦变换?
opencvpythonserver side programmingprogramming
我们应用 cv2.dct() 来查找图像的离散余弦变换。此函数转换 dtype float32 的灰度图像。它接受两种类型的标志 cv2.DCT_INVERSE 或 cv2.DCT_ROWS。要将转换后的图像转换为原始图像,我们使用 cv2.idct()。
步骤
要查找输入图像的离散余弦变换,您可以按照以下步骤操作 -
导入所需的 OpenCV 和 NumPy 库。确保您已经安装了它们。
使用 cv2.imread() 方法读取输入图像。指定图像的完整路径。使用 cv2.cvtColor() 方法将输入图像转换为灰度图像。将灰度图像转换为 np.float32。
使用 cv2.dct() 查找图像的离散余弦变换。此方法以浮点形式获取灰度图像。将标志 cv2.DCT_INVERSE 或 cv2.DCT_ROWS 传递给 cv2.dct() 函数。使用 cv2.imshow() 方法可视化输入图像的离散变换。
要在离散余弦变换后可视化输入图像,请应用逆离散余弦变换 cv2.idct()。并将图像转换为 np.uint8。
让我们看一下查找输入图像的离散余弦变换的示例。
输入图像
我们将在下面的示例中使用下图作为输入文件。
示例
在此示例中,我们查找输入图像的离散余弦变换。我们将标志 cv2.DCT_INVERSE 传递给 cv2.dct() 函数。
# import required libraries import cv2 import numpy as np # read input image as grayscale img = cv2.imread('leaf1.jpg', 0) # convert the grayscale to float32 imf = np.float32(img) # float conversion # find discrete cosine transform dst = cv2.dct(imf, cv2.DCT_INVERSE) # apply inverse discrete cosine transform img1 = cv2.idct(dst) # convert to uint8 img1 = np.uint8(img) # display the images cv2.imshow("DCT", dst) cv2.waitKey(0) cv2.imshow("IDCT back image", img1) cv2.waitKey(0) cv2.destroyAllWindows()
输出
当我们运行上述程序时,它将生成以下输出窗口 -
示例
在此示例中,我们找到输入图像的离散余弦变换。我们将标志cv2.DCT_ROWS传递给cv2.dct()函数。
# import required libraries import cv2 import matplotlib.pyplot as plt import numpy as np # read input image as grayscale img = cv2.imread('leaf1.jpg', 0) # convert the grayscale to float32 imf = np.float32(img) # float conversion # find discrete cosine transform dct = cv2.dct(imf, cv2.DCT_ROWS) # apply inverse discrete cosine transform img1 = cv2.idct(dct) # convert to uint8 img1 = np.uint8(img) # display the image cv2.imshow("DCT", dct) cv2.waitKey(0) cv2.imshow("IDCT back image", img1) cv2.waitKey(0) cv2.destroyAllWindows()
输出
当我们运行上述程序时,它将产生以下输出窗口 −