1. 程式人生 > >Python - Opencv OpenCV中cv2的用法

Python - Opencv OpenCV中cv2的用法

以下複製自 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()