如何使用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 cv2
import numpy as np

# 读入灰度图像
img = cv2.imread('leaf1.jpg', 0)

# 将灰度图像转换为float32类型
imf = np.float32(img) #float转换

# 查找离散余弦变换
dst = cv2.dct(imf, cv2.DCT_INVERSE)

# 应用逆离散余弦变换
img1 = cv2.idct(dst)

# 转换为uint8类型
img1 = np.uint8(img)

# 显示图片
cv2.imshow("DCT", dst)
cv2.waitKey(0)
cv2.imshow("IDCT back image", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

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

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

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

示例

在此示例中,我们找到输入图像的离散余弦变换。我们将标志 cv2.DCT_ROWS 传递给 cv2.dct() 函数。

# 导入所需的库
import cv2
import matplotlib.pyplot as plt
import numpy as np

# 将灰度图像读取为float32格式
img = cv2.imread('leaf1.jpg', 0)
imf = np.float32(img) # 转换为float32格式

# 对输入图像进行离散余弦变换
dct = cv2.dct(imf, cv2.DCT_ROWS)

# 对离散余弦变换的图像进行反变换
img1 = cv2.idct(dct)

# 转换为uint8格式
img1 = np.uint8(img)

# 显示图像
cv2.imshow("DCT", dct)
cv2.waitKey(0)
cv2.imshow("IDCT反向图像", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

运行上述程序后,将在窗口中生成以下 输出

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV