如何使用OpenCV Python查找图像的离散余弦变换?


我们使用cv2.dct()来查找图像的离散余弦变换。此函数转换dtype为float32的灰度图像。它接受两种类型的标志cv2.DCT_INVERSEcv2.DCT_ROWS。要将变换后的图像转换为原始图像,我们使用cv2.idct()

步骤

要查找输入图像的离散余弦变换,您可以按照以下步骤操作:

  • 导入所需的库OpenCV和NumPy。确保您已安装它们。

  • 使用cv2.imread()方法读取输入图像。指定图像的完整路径。使用cv2.cvtColor()方法将输入图像转换为灰度图像。将灰度图像转换为np.float32

  • 使用cv2.dct()查找图像的离散余弦变换。此方法采用浮点型灰度图像。将标志cv2.DCT_INVERSEcv2.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()

输出

运行上述程序时,它将生成以下输出窗口:



更新于:2022年12月2日

6K+ 次浏览

启动您的职业生涯

完成课程后获得认证

开始学习
广告
© . All rights reserved.