python opencv 實現(xiàn)讀取、顯示、寫入圖像的方法
opencv是一個強大的圖像處理和計算機視覺庫,實現(xiàn)了很多實用算法,值得學(xué)習和深究下。
opencv包安裝
· 這里直接安裝opencv-python包(非官方): pip install opencv-python
官方文檔:https://opencv-python-tutroals.readthedocs.io/en/latest/
1、讀取圖像
import cv2
image=cv2.imread("dog2.jpg",1)
說明:
第二個參數(shù)是一個標志,它指定了讀取圖像的方式。
- cv.IMREAD_COLOR: 加載彩色圖像。任何圖像的透明度都會被忽視。它是默認標志。
- cv.IMREAD_GRAYSCALE:以灰度模式加載圖像
- cv.IMREAD_UNCHANGED:加載圖像,包括alpha通道
注意除了這三個標志,你可以分別簡單地傳遞整數(shù)1、0或-1。
即使圖像路徑出現(xiàn)了錯誤,也不會報錯,而是print(image)會輸出None。
2、顯示圖像
cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destroyAllWindows()
說明:
使用函數(shù)cv.imshow()在窗口中顯示圖像。窗口自動適合圖像尺寸。
cv.waitKey()是一個鍵盤綁定函數(shù)。其參數(shù)是以毫秒為單位的時間。該函數(shù)等待任何鍵盤事件指定的毫秒。如果您在這段時間內(nèi)按下任何鍵,程序?qū)⒗^續(xù)運行。如果0被傳遞,它將無限期地等待一次敲擊鍵。它也可以設(shè)置為檢測特定的按鍵,例如,如果按下鍵 a 等,我們將在下面討論。
注意 除了鍵盤綁定事件外,此功能還處理許多其他GUI事件,因此你必須使用它來實際顯示圖像。
cv.destroyAllWindows()只會破壞我們創(chuàng)建的所有窗口。如果要銷毀任何特定的窗口,請使用函數(shù)cv.destroyWindow()在其中傳遞確切的窗口名稱作為參數(shù)。
注意在特殊情況下,你可以創(chuàng)建一個空窗口,然后再將圖像加載到該窗口。在這種情況下,你可以指定窗口是否可調(diào)整大小。這是通過功能cv.namedWindow()完成的。默認情況下,該標志為cv.WINDOW_AUTOSIZE。但是,如果將標志指定為cv.WINDOW_NORMAL,則可以調(diào)整窗口大小。當圖像尺寸過大以及向窗口添加跟蹤欄時,這將很有幫助。
cv2.namedWindow('image',cv.WINDOW_NORMAL)
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3、寫入圖像
使用函數(shù)cv.imwrite()保存圖像。
第一個參數(shù)是文件名,第二個參數(shù)是要保存的圖像。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'): # 等待關(guān)鍵字,保存和退出
cv.imwrite('dog2gray.png',img)
cv.destroyAllWindows()
如果使用的是64位計算機,則必須k = cv.waitKey(0)按如下所示修改行:k = cv.waitKey(0) & 0xFF
4、結(jié)合使用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中將無法正確顯示彩色圖像。
總結(jié)
到此這篇關(guān)于python opencv 實現(xiàn)讀取、顯示、寫入圖像的方法的文章就介紹到這了,更多相關(guān)python opencv 圖片讀取顯示寫入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 類對象和實例對象動態(tài)添加方法(分享)
下面小編就為大家分享一篇python 類對象和實例對象動態(tài)添加方法。具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
Pytho爬蟲中Requests設(shè)置請求頭Headers的方法
這篇文章主要介紹了Pytho爬蟲中Requests設(shè)置請求頭Headers的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-09-09
python查詢MySQL將數(shù)據(jù)寫入Excel
這篇文章主要介紹了python如何查詢MySQL將數(shù)據(jù)寫入Excel,幫助大家利用python高效的辦公,感興趣的朋友可以了解下2020-10-10

