OpenCV 儲存影象
本教程將討論使用 OpenCV 的 imwrite()
函式儲存影象。
在 OpenCV 中儲存影象
影象由放置在矩陣中的畫素組成。每個畫素都包含一個顏色值作為 BGR 三元組。
例如,一張 512×512 的影象由 512 列和 512 行組成,影象中存在的畫素總數等於行數乘以列數。BGR 三元組值在 8 點陣圖像中包含範圍從 0 到 255 的三個值。
第一個值對應於藍色的強度。例如,值為 (255,0,0) 的畫素將具有深藍色,而值為 (50,0,0) 的畫素將具有淺藍色。
第二個和第三個 BRG 三元組值對應於綠色和紅色。我們可以設定這三種顏色的值來製作任何顏色。
在 8 點陣圖像中,單個畫素可以有 256 乘以 256 乘以 255 種不同的顏色。我們可以使用 OpenCV 的 imwrite()
函式以我們想要的影象格式儲存影象。
例如,讓我們建立一個彩色影象並將其儲存為 jpg
。請參閱下面的程式碼。
import cv2
import numpy as np
img = np.zeros((512,512,3), dtype=np.uint8)
img[:,0:250] = (255,255,0)
img[:,250:512] = (0,255,255)
cv2.imwrite('Image_name.jpg', img)
saved_image = cv2.imread('Image_name.jpg')
cv2.imshow('image', saved_image)
cv2.waitKey()
輸出:
我們使用 NumPy
的 zeros()
函式來建立上面的影象。imwrite()
函式的第一個引數是檔案的名稱和副檔名,第二個引數是儲存影象的變數。
在上面的程式碼中,我們使用 imread()
函式讀取我們儲存的影象並使用 OpenCV 的 imshow()
函式顯示它。我們要儲存的影象應該是 8 位的,並且有一個或三個通道。
對於 16 點陣圖像,我們只能將其儲存為 TIFF、JPEG 和 PNG 格式。對於 32 點陣圖像,我們可以將其儲存為 TIFF、HDR 和 OpenEXR
格式。
此外,影象應該在 BGR 顏色空間中。如果沒有,我們可以使用 OpenCV 的 cvtColor()
函式將一種顏色空間更改為另一種顏色空間。
如果通道順序或深度不同,我們可以使用 convertTo()
函式將影象轉換為支援的格式。
我們還可以使用上述函式儲存 8 位或 16 位 BGRA 色彩空間影象。