Python - Opencv OpenCV中cv2的用法
阿新 • • 發佈:2018-11-07
以下複製自 desolateness OpenCV中cv2的用法
一、讀入影象
使用函式cv2.imread(filepath,flags)讀入一副圖片
- filepath:要讀入圖片的完整路徑
- flags:讀入圖片的標誌
- cv2.IMREAD_COLOR:預設引數,讀入一副彩色圖片,忽略alpha通道
- cv2.IMREAD_GRAYSCALE:讀入灰度圖片
- cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道
import cv2 img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
二、顯示影象
使用函式cv2.imshow(wname,img)顯示影象,第一個引數是顯示影象的視窗的名字,第二個引數是要顯示的影象(imread讀入的影象),視窗大小自動調整為圖片大小
cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() # dv2.destroyWindow(wname)
- 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、使用函式cv2.flip(img,flipcode)翻轉影象,flipcode控制翻轉效果。
- flipcode = 0:沿x軸翻轉
- flipcode > 0:沿y軸翻轉
- flipcode < 0:x,y軸同時翻轉
imgflip = cv2.flip(img,1)
2、複製影象
imgcopy = img.copy()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
示例
讀入一副影象,按’s’鍵儲存後退出,其它任意鍵則直接退出不儲存
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()