如何使用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.