OpenCV 廣泛被應用在對目標進行辨識、測量、紀錄等,並更進一步的進行影像處理!
由於 OpenCV 本身就有提供讀取圖片檔的函數可用,讀取一般的圖片檔時,只要呼叫 cv2.imread
即可將圖片讀取進來。
以 cv2.imread 讀進來的資料,會儲存成一個 NumPy 陣列
此 NumPy 陣列的前兩個維度分別是圖片的高度與寬度,第三個維度則是圖片的 channel(RGB 彩色圖片的 channel 是 3,灰階圖片則為 1)
import cv2
img = cv2.imread('image.jpg') #讀取圖片
print(type(img)) #查看資料型態
print(img.shape) #檢查這個 NumPy 陣列的大小
圖片讀取進來之後,使用 OpenCV 所提供的 cv2.imshow
來顯示圖片
cv2.imshow 的第一個參數為欲定的視窗名稱,第二個參數為要顯示的圖像~
cv2.imshow('My Image', img) #顯示圖片
#關閉所有視窗
cv2.waitKey(0)
cv2.destroyAllWindows()
#關閉指定視窗
cv2.destroyWindows('My Image')
cv2.waitKey 是用來等待與讀取使用者按下按鍵而關閉圖片視窗。
參數是等待時間(毫秒),若設為 0 就表示會等待使用者按下任何按鍵為止。
如果在程式中有許多的 OpenCV 視窗,而我們只要關閉
特定的視窗
時,可以改用cv2.destroyWindow
加上視窗名稱,關閉指定的視窗。
圖片來源: 朋友的狗狗憤怒吐舌瞬間><
注意視窗上的名稱 My Image 是自己在cv2.imshow定的喔~
使用 OpenCV 的 cv2.imwrite
可以使用 opencv 內建的函數 cvtColor 將圖片轉為灰階~
# 將圖片轉成灰階
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
cv2.imwrite('My Image.jpg', gray) # 儲存圖檔
假如原本的圖是 jpg 檔,也可以用cv2.imwrite
存為其他格式
# 寫入不同圖檔格式
cv2.imwrite('My Image.png', img)
cv2.imwrite('My Image.tiff', img)
轉成灰階的狗勾!