寫入並儲存圖片
這篇教學會介紹 OpenCV 裡的 imwrite() 方法,實現將圖片另存新檔 ( 也可轉檔 ) 的功能。
因為程式中的 OpenCV 會需要使用鏡頭或 GPU,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda ) ,並安裝 OpenCV 函式庫 ( 參考:OpenCV 函式庫 )。
imwrite() 寫入並儲存圖片
使用 imwrite() 方法,可以將處理好的資料內容寫入並儲存為圖片,imwrite() 有三個參數,第一個參數為檔案的路徑和名稱,第二個參數為要寫入的資料內容,第三個參數為圖片壓縮品質的設定 ( 非必要,參考:ImwriteFlags )。
下方的程式碼執行後,會先用「灰階模式」開啟一張圖片,然後再將其存檔為壓縮品質 80 的 jpg 和套用預設值的 png 圖檔。
import cv2
img = cv2.imread('meme.jpg', cv2.IMREAD_GRAYSCALE) # 以灰階模式開啟圖片
cv2.imwrite('oxxostudio_2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 80]) # 存成 jpg
cv2.imwrite('oxxostudio_3.png', img) # 存成 png
儲存陣列產生的圖片
在 Python 裡,圖片可以使用「三維陣列」的方式表現 ( 長寬各多少個像素、每個像素裡包含的顏色資訊是什麼 ),因此如果提供特定格式的三維陣列的資料,就能讓 OpenCV 畫出圖形。
下面的範例使用 numpy 函式庫,快速產生 500x500,每個項目為 [0,0,0] 的三維陣列,接著再讓陣列中間的正方形區域的項目設定為 [0,0,255],呈現的就是一張 500x500 大小,黑色背景,中間 200x200 紅色正方形的圖形,最後使用 imwrite() 的方法,就能儲存這張圖片。
注意!OpenCV 裡的顏色為「BGR」,並非 RGB,顏色色碼為 0~255。
import cv2
import numpy as np
img = np.zeros((500,500,3), dtype='uint8') # 快速產生 500x500,每個項目為 [0,0,0] 的三維陣列
img[150:350, 150:350] = [0,0,255] # 將中間 200x200 的每個項目內容,改為 [0,0,255]
cv2.imwrite('oxxostudio.jpg', img) # 存成 jpg
cv2.imshow('oxxostudio', img) # 顯示圖片
cv2.waitKey(0) # 按下任意鍵停止
cv2.destroyAllWindows()
參考資料
- OpenCV:ImwriteFlags
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~