1. 程式人生 > 程式設計 >python opencv 實現讀取、顯示、寫入影象的方法

python opencv 實現讀取、顯示、寫入影象的方法

 opencv是一個強大的影象處理和計算機視覺庫,實現了很多實用演算法,值得學習和深究下。

opencv包安裝

·  這裡直接安裝opencv-python包(非官方): pip install opencv-python

   官方文件:https://opencv-python-tutroals.readthedocs.io/en/latest/

1、讀取影象

import cv2
image=cv2.imread("dog2.jpg",1)

說明:

第二個引數是一個標誌,它指定了讀取影象的方式。

  • cv.IMREAD_COLOR: 載入彩色影象。任何影象的透明度都會被忽視。它是預設標誌。
  • cv.IMREAD_GRAYSCALE:以灰度模式載入影象
  • cv.IMREAD_UNCHANGED:載入影象,包括alpha通道

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

即使影象路徑出現了錯誤,也不會報錯,而是print(image)會輸出None。

2、顯示影象

cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destroyAllWindows()

說明:

使用函式cv.imshow()在視窗中顯示影象。視窗自動適合影象尺寸。

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

注意 除了鍵盤繫結事件外,此功能還處理許多其他GUI事件,因此你必須使用它來實際顯示影象。

cv.destroyAllWindows()只會破壞我們建立的所有視窗。如果要銷燬任何特定的視窗,請使用函式cv.destroyWindow()在其中傳遞確切的視窗名稱作為引數。

注意在特殊情況下,你可以建立一個空視窗,然後再將影象載入到該視窗。在這種情況下,你可以指定視窗是否可調整大小。這是通過功能cv.namedWindow()完成的。預設情況下,該標誌為cv.WINDOW_AUTOSIZE。但是,如果將標誌指定為cv.WINDOW_NORMAL,則可以調整視窗大小。當影象尺寸過大以及向視窗新增跟蹤欄時,這將很有幫助。

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

3、寫入影象

使用函式cv.imwrite()儲存影象。

第一個引數是檔名,第二個引數是要儲存的影象。cv.imwrite('messigray.png',img)

這會將影象以PNG格式儲存在工作目錄中。

在下面的程式中,以灰度載入影象,顯示影象,按s儲存影象並退出,或者按ESC鍵直接退出而不儲存。

import numpy as np
import cv2 
img = cv.imread('dog2.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27:   # 等待ESC退出
 cv.destroyAllWindows()
elif k == ord('s'): # 等待關鍵字,儲存和退出
 cv.imwrite('dog2gray.png',img)
 cv.destroyAllWindows()

如果使用的是64位計算機,則必須k = cv.waitKey(0)按如下所示修改行:k = cv.waitKey(0) & 0xFF

4、結合使用matplotlib

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('messi5.jpg',0)
plt.imshow(img,cmap = 'gray',interpolation = 'bicubic')
plt.xticks([]),plt.yticks([]) # 隱藏 x 軸和 y 軸上的刻度值
plt.show()

警告:OpenCV載入的彩色影象處於BGR模式。但是Matplotlib以RGB模式顯示。因此,如果使用OpenCV讀取彩色影象,則Matplotlib中將無法正確顯示彩色影象。

總結

到此這篇關於python opencv 實現讀取、顯示、寫入影象的方法的文章就介紹到這了,更多相關python opencv 圖片讀取顯示寫入內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!