openCV+python影象的讀取、顯示和儲存
阿新 • • 發佈:2019-02-11
使用cv2.imread(),cv2.imshow(),cv2.imwrite()讀取、顯示和儲存影象
一、讀入影象
使用函式cv2.imread(filepath,flags)讀入一副圖片
- filepath:要讀入圖片的完整路徑
- flags:讀入圖片的標誌
- cv2.IMREAD_COLOR:預設引數,讀入一副彩色圖片,忽略alpha通道
- cv2.IMREAD_GRAYSCALE:讀入灰度圖片
- cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道
import numpy as np import cv2 img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
- 1
- 2
- 3
二、顯示影象
使用函式cv2.imshow(wname,img)顯示影象,第一個引數是顯示影象的視窗的名字,第二個引數是要顯示的影象(imread讀入的影象),視窗大小自動調整為圖片大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#dv2.destroyWindow(wname)
- 1
- 2
- 3
- 4
- cv2.waitKey顧名思義等待鍵盤輸入,單位為毫秒,即等待指定的毫秒數看是否有鍵盤輸入,若在等待時間內按下任意鍵則返回按鍵的ASCII碼,程式繼續執行。若沒有按下任何鍵,超時後返回-1。引數為0表示無限等待。不呼叫waitKey的話,視窗會一閃而逝,看不到顯示的圖片。
- cv2.destroyAllWindow()銷燬所有視窗
- cv2.destroyWindow(wname)銷燬指定視窗
三、儲存影象
使用函式cv2.imwrite(file,img,num)儲存一個影象。第一個引數是要儲存的檔名,第二個引數是要儲存的影象。可選的第三個引數,它針對特定的格式:對於JPEG,其表示的是影象的質量,用0 - 100的整數表示,預設95;對於png ,第三個引數表示的是壓縮級別。預設為3.
注意:
- cv2.IMWRITE_JPEG_QUALITY型別為 long ,必須轉換成 int
- cv2.IMWRITE_PNG_COMPRESSION, 從0到9 壓縮級別越高影象越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
- 1
- 2
四、圖片操作
1、使用函式cv2.flip(img,flipcode)翻轉影象,flipcode控制翻轉效果。
- flipcode = 0:沿x軸翻轉
- flipcode > 0:沿y軸翻轉
- flipcode < 0:x,y軸同時翻轉
imgflip = cv2.flip(img,1)
- 1
2、複製影象
imgcopy = img.copy()
- 1
3、顏色空間轉換
#彩色影象轉為灰度影象
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#灰度影象轉為彩色影象
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
# cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
- 1
- 2
- 3
- 4
- 5
示例
讀入一副影象,按’s’鍵儲存後退出,其它任意鍵則直接退出不儲存
import numpy as np
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('1.png',img)
cv2.destroyAllWindows()
else:
cv2.destroyAllWindows()