OpenCV Python 如何找到图像的离散余弦变换

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

让我们来看几个示例,找到输入图像的离散余弦变换。

输入图像

我们将使用下面的图像作为下面示例中的输入文件。

OpenCV Python 如何找到图像的离散余弦变换

示例

在这个示例中,我们找到了输入图像的离散余弦变换。我们将标志 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()

输出

当我们运行以上程序时,它会产生以下 输出

windows −

OpenCV Python 如何找到图像的离散余弦变换

OpenCV Python 如何找到图像的离散余弦变换

示例

在这个示例中,我们找到输入图像的离散余弦变换。我们将标志 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()

输出

当我们运行上面的程序时,它将产生以下 输出 Windows –

OpenCV Python 如何找到图像的离散余弦变换

OpenCV Python 如何找到图像的离散余弦变换

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程