python-計算機視覺-OpenCV-Image

目錄

學習目標

Read an image 讀取圖像

Display an image 顯示圖像

Write an image 寫一張圖

Sum it up 總結一下

拓展-使用 Matplotlib


學習目標

將學習如何讀取圖像、如何顯示圖像以及如何保存圖像。

學習這些函數: cv2.imread () ,cv2.imshow () ,cv2.imwrite ()。

學習如何使用 Matplotlib 顯示圖像。

Read an image 讀取圖像

import numpy as np
import cv2

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

使用函數 cv2.imread ()讀取圖像。 圖像應該在工作目錄或圖像的完整路徑應給出。

第二個參數是一個標誌,它指定了讀取圖像的方式。

  • cv2.IMREAD_COLOR :加載彩色圖像。 任何圖像的透明度都會被忽視。 它是默認標誌
  • cv2.IMREAD_GRAYSCALE:以灰度模式加載圖像
  • cv2.IMREAD_UNCHANGED:加載包括 alpha 通道在內的圖像

注意:

除了這三個標誌,您還可以簡單地分別傳遞整數1、0或 -1。

即使圖像路徑是錯誤的,它也不會拋出任何錯誤,但是 print img 會給出 None


 

Display an image 顯示圖像

用函數 cv2.imshow ()在窗口中顯示圖像。 該窗口自動適合圖像的大小。

img = cv2.imread('11.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

aitkey ()是一個鍵盤綁定函數。 其參數是以毫秒爲單位的時間。 該函數等待任何鍵盤事件指定的毫秒。 如果您在這段時間內按下任何鍵,程序將繼續運行。 如果0被傳遞,它將無限期地等待一次敲擊鍵。 它也可以設置爲檢測特定的按鍵,例如,如果按下鍵 a 等,我們將在下面討論。

Destroyallwindows ()只會破壞我們創建的所有窗口。 如果您想要銷燬任何特定的窗口,可以使用函數 cv2.destroyWindow () ,在該函數中將確切的窗口名稱作爲參數傳遞。


注意:

在特殊情況下,您可以先創建一個窗口,然後再將圖像加載到該窗口。 在這種情況下,您可以指定窗口是否可以調整大小。 它是通過函數 cv2.namedWindow ()實現的。 默認情況下,標誌是 cv2.WINDOW AUTOSIZE。 但是如果您將標誌指定爲 cv2.WINDOW NORMAL,則可以調整窗口的大小。 當圖像尺寸太大時,在窗口添加跟蹤條會很有幫助。


讀取圖片如下截圖:

 

Write an image 寫一張圖

使用函數 cv2.imwrite ()保存映像。 

img = cv2.imread('11.jpg',cv2.IMREAD_COLOR)
cv2.imwrite('messigray.png',img)

 第一個參數是文件名,第二個參數是要保存的圖像。這將以 PNG 格式保存圖像到工作目錄中。

 

Sum it up 總結一下

下面的程序加載一個圖像的灰度,顯示它,保存圖像,如果你按'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()

注意:

如果您使用的是64位機器,則必須修改如下 kcv2.waitkey (0)行: kcv2.waitkey (0) & 0xFF


 

拓展-使用 Matplotlib

Matplotlib 是 Python 的繪圖庫,它提供了各種各樣的繪圖方法。 你會在接下來的文章中看到它們。 在這裏,您將學習如何使用 Matplotlib 顯示圖像。 你可以使用 Matplotlib 縮放圖片,保存圖片等。

若沒下載,請執行

pip install 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()

運行上面代碼,如下:


注意:

Matplotlib 有很多可供選擇的繪圖方法。 更多細節請參考 Matplotlib 文檔。 一些,我們會在路上看到。

Opencv 加載的彩色圖像處於 BGR 模式。 但是 Matplotlib 顯示爲 RGB 模式。 因此,在 Matplotlib,如果使用 OpenCV 讀取圖像,彩色圖像將無法正確顯示。 詳情請參閱練習。


拓展資料:

Matplotlib Plotting Styles and Features

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章