1. 程式人生 > >OpenCV-Python 官方文件學習

OpenCV-Python 官方文件學習

影象學習:

目標:

1.在這裡你會學習到如何讀取一個影象,如何取顯示並且儲存它。

2.你將徐匯這些方法:cv2.imread() , cv2.imshow() , cv2.imwrite() ;

3.自然而然的你就學會了如何使用Matplotlib庫去顯示圖片。

OpenCV的使用

讀取一張圖片

使用cv2.imread() 去讀取一張圖片。這張圖片應該在工作目錄下或者是在其他地方但需要給定一個全路徑。

第二個引數是一個標誌,他指定了圖片使用什麼方式去讀取。

  • cv2.IMREAD_COLOR:載入彩色影象。影象的任何透明度都將被忽略。它是預設標誌。
  • cv2.IMREAD_GRAYSCALE:在灰度模式下載入影象。
  • cv2.IMREAD_UNCHANGED:使用alpha通道載入影象。

注意:在使用過程中並非使用這三個變數,你可以使用整數 0,1,-1 分別代表他們。

例子:

import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

提示: 如果你的圖片地址寫錯了,執行時候並不報錯,但是當你 print img 將會給你報錯。

顯示一張圖片

使用cv2.imshow() 在一個視窗下顯示一張圖片,這個視窗會自動適應圖片的尺寸。

第一個引數是視窗的名稱,他的型別是String。第二個引數是我們的影象,你能建立很多視窗如果你需要的話,但是這些視窗名稱必須都不一樣。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() 是一個鍵盤繫結函式。它的引數是以毫秒為單位的時間。該函式等待任何鍵盤事件的指定毫秒。如果您在這段時間內按下任何鍵,程式將繼續進行。如果0被傳遞,它將無限期地等待鍵擊。它也可以設定為檢測特定的鍵筆畫,如果鍵a是按下等,我們將在下面討論。

cv2.destroyAllWinddows() 簡單的毀掉所有我們建立過的視窗。如果你想關閉任何指定的視窗,使用這個方法,其中傳遞精確的視窗名稱作為引數。

注意:有一種特殊情況,您已經可以建立一個視窗並在以後將影象載入到它。

在這種情況下,您可以指定視窗是否可以調整大小。這是通過函式cv2.namedWindow()完成的。預設情況下,標誌是cv2.WINDOW_AUTOSIZE。但是,如果將標誌指定為cv2.WINDOW_ALL,則可以調整視窗的大小。當影象尺寸太大,並在視窗中新增跟蹤條時,這將是很有幫助的。

以下程式碼:

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

寫入一張圖片

使用方法cv2.imwrite() 去儲存一個圖片。第一個引數是檔名稱,第二個引數是你想儲存的影象變數。

cv2.imwrite('messigray.png',img)

小計

下面的程式在灰度中載入一個影象,顯示它,如果您按s‘並退出,則儲存該影象,如果您按esc鍵,則簡單地退出而不儲存。

import numpy as np
import cv2

img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
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()


使用Matplotlib

Matplotlib是Python的繪相簿,它為您提供了各種各樣的繪圖方法。你會在接下來的文章中看到它們。在這裡,您將學習如何使用Matplotlib顯示影象。您可以縮放影象,儲存它等使用Matplotlib。

import numpy as np
import cv2
from matplotlib import pyplot as plt

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

執行截圖:

參考資源:

  1. Matplotlib Plotting Styles and Features