opencv python 讀取圖像/顯示圖像/保存圖像

之前也用過opencv, 不過都是按需使用, 掌握的知識很零散, 此次但願可以系統學習opencv-pythonhtml

本文直接從Gui Features開始.python

1 讀取圖片

使用cv2.imread()函數讀取圖像.ide

cv2.imread(filename[, flags])函數

filename 圖片的路徑, 圖片應該在工做目錄下, 否則應給出圖片完整路徑
flags 指定圖像讀取方式:學習

  • cv2.IMREAD_COLOR : 加載彩色圖像. 圖像的任何透明度都將被忽略.(默認)
  • cv2.IMREAD_GRAYSCALE : 以灰度模式加載圖像.
  • cv2.IMREAD_UNCHANGED : 加載包含Alpha通道的圖像

Note : 能夠使用1,0,-1 代替表示上述三種圖像讀取方式
代碼 :ui

import cv2
img = cv2.imread('E:/pyproject/haha.jpg',1)

Note :spa

  1. 若是缺乏文件,權限不當,格式不受支持或無效,當print(圖片)時,將返回None.
  2. 該函數經過內容而不是文件擴展名來決定圖像類型.
  3. 圖像數據將以B,G,R的順序存儲.

2 顯示圖片

使用cv2.imshow()函數讀取圖像.3d

cv2.imshow(winname, mat)code

winname 顯示窗口的名字
mat 要顯示的圖像htm

cv2.namedWindow(winname[, flags])

winname 顯示窗口的名字
flags 顯示窗口的標誌:

  • cv2.WINDOW_AUTOSIZE : 根據顯示圖像自動調整窗口,不能手動更改窗口大小(默認)
  • cv2.WINDOW_NORMAL : 能夠調整窗口大小
  • ……

cv2.waitKey([, delay]) 一個綁定鍵盤功能。

delay 以毫秒爲單位延遲。 0是指「永遠」的特殊值。

cv2.destroyAllWindows()

簡單地破壞咱們建立的全部窗口。若是想銷燬任何特定的窗口,在其中傳遞確切的窗口名稱做爲參數。

Note :
若是顯示圖像窗口在imshow()未提早建立,系統將默認cv2.WINDOW_AUTOSIZE建立窗口

代碼一 :

cv2.imshow("showing",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

代碼二 :

cv2.namedWindow('showing', cv2.WINDOW_NORMAL)
cv2.imshow("showing",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

clipboard.png

3 保存圖片

cv2.imwrite(filename, img[, params])

filename 圖像名稱
img 保存的圖像
params 對於JPEG,其表示的是圖像的質量,用0 - 100的整數表示,默認95;對於png ,第 三個參數表示的是壓縮級別。默認爲3.

代碼 :

cv2.imwrite('E:/pyproject/1.jpg',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])

clipboard.png

應用:

加載一幅灰度圖像,顯示它,若是按's'則保存圖像並退出,若是按ESC鍵直接退出。

import cv2

img = cv2.imread('E:/pyproject/haha.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)& 0xFF
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()

4 使用 Matplotlib

使用Matplotlib顯示圖像。 你能夠放大圖像,使用Matplotlib保存等。

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('E:/pyproject/haha.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

clipboard.png

相關文章
相關標籤/搜索