python opencv 實(shí)現(xiàn)讀取、顯示、寫(xiě)入圖像的方法
opencv是一個(gè)強(qiáng)大的圖像處理和計(jì)算機(jī)視覺(jué)庫(kù),實(shí)現(xiàn)了很多實(shí)用算法,值得學(xué)習(xí)和深究下。
opencv包安裝
· 這里直接安裝opencv-python包(非官方): pip install opencv-python
官方文檔:https://opencv-python-tutroals.readthedocs.io/en/latest/
1、讀取圖像
import cv2 image=cv2.imread("dog2.jpg",1)
說(shuō)明:
第二個(gè)參數(shù)是一個(gè)標(biāo)志,它指定了讀取圖像的方式。
- cv.IMREAD_COLOR: 加載彩色圖像。任何圖像的透明度都會(huì)被忽視。它是默認(rèn)標(biāo)志。
- cv.IMREAD_GRAYSCALE:以灰度模式加載圖像
- cv.IMREAD_UNCHANGED:加載圖像,包括alpha通道
注意除了這三個(gè)標(biāo)志,你可以分別簡(jiǎn)單地傳遞整數(shù)1、0或-1。
即使圖像路徑出現(xiàn)了錯(cuò)誤,也不會(huì)報(bào)錯(cuò),而是print(image)會(huì)輸出None。
2、顯示圖像
cv2.imshow("image",image) cv2.waitKey(0) cv2.destroyAllWindows()
說(shuō)明:
使用函數(shù)cv.imshow()
在窗口中顯示圖像。窗口自動(dòng)適合圖像尺寸。
cv.waitKey()
是一個(gè)鍵盤(pán)綁定函數(shù)。其參數(shù)是以毫秒為單位的時(shí)間。該函數(shù)等待任何鍵盤(pán)事件指定的毫秒。如果您在這段時(shí)間內(nèi)按下任何鍵,程序?qū)⒗^續(xù)運(yùn)行。如果0被傳遞,它將無(wú)限期地等待一次敲擊鍵。它也可以設(shè)置為檢測(cè)特定的按鍵,例如,如果按下鍵 a 等,我們將在下面討論。
注意 除了鍵盤(pán)綁定事件外,此功能還處理許多其他GUI事件,因此你必須使用它來(lái)實(shí)際顯示圖像。
cv.destroyAllWindows()
只會(huì)破壞我們創(chuàng)建的所有窗口。如果要銷毀任何特定的窗口,請(qǐng)使用函數(shù)cv.destroyWindow()在其中傳遞確切的窗口名稱作為參數(shù)。
注意在特殊情況下,你可以創(chuàng)建一個(gè)空窗口,然后再將圖像加載到該窗口。在這種情況下,你可以指定窗口是否可調(diào)整大小。這是通過(guò)功能cv.namedWindow()完成的。默認(rèn)情況下,該標(biāo)志為cv.WINDOW_AUTOSIZE。但是,如果將標(biāo)志指定為cv.WINDOW_NORMAL,則可以調(diào)整窗口大小。當(dāng)圖像尺寸過(guò)大以及向窗口添加跟蹤欄時(shí),這將很有幫助。
cv2.namedWindow('image',cv.WINDOW_NORMAL) cv2.imshow('image',image) cv2.waitKey(0) cv2.destroyAllWindows()
3、寫(xiě)入圖像
使用函數(shù)cv.imwrite()保存圖像。
第一個(gè)參數(shù)是文件名,第二個(gè)參數(shù)是要保存的圖像。cv.imwrite('messigray.png',img)
這會(huì)將圖像以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位計(jì)算機(jī),則必須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中將無(wú)法正確顯示彩色圖像。
總結(jié)
到此這篇關(guān)于python opencv 實(shí)現(xiàn)讀取、顯示、寫(xiě)入圖像的方法的文章就介紹到這了,更多相關(guān)python opencv 圖片讀取顯示寫(xiě)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于python實(shí)現(xiàn)操作redis及消息隊(duì)列
這篇文章主要介紹了基于python操作redis及消息隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08python光學(xué)仿真實(shí)現(xiàn)光線追跡之空間關(guān)系
這篇文章主要介紹了python光學(xué)仿真中實(shí)現(xiàn)光線追跡的空間關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10Python編程快速上手——strip()函數(shù)的正則表達(dá)式實(shí)現(xiàn)方法分析
這篇文章主要介紹了Python strip()函數(shù)的正則表達(dá)式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python基于正則表達(dá)式實(shí)現(xiàn)strip()函數(shù)的方法,需要的朋友可以參考下2020-02-02教你怎么用Python selenium操作瀏覽器對(duì)象的基礎(chǔ)API
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著怎么用Python selenium操作瀏覽器對(duì)象的基礎(chǔ)API展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06Python基于Gensim實(shí)現(xiàn)文本相似度/匹配/查重
Gensim是基于Python語(yǔ)言的自然語(yǔ)言處理庫(kù),用來(lái)主題建模、文本相似度等文本處理任務(wù),下面我們就來(lái)看看如何使用Gensim實(shí)現(xiàn)文本相似度/匹配/查重等操作吧2024-03-03Python中工作日類庫(kù)Busines Holiday的介紹與使用
Python語(yǔ)言是通過(guò)區(qū)分類庫(kù)的方式來(lái)劃分功能。用戶根據(jù)自身的需要加載合適的類庫(kù),來(lái)完成需要的功能。下面這篇文章主要給大家介紹了關(guān)于Python中工作日類庫(kù)Busines Holiday使用的相關(guān)資料,需要的朋友可以參考借鑒。2017-07-07Python機(jī)器學(xué)習(xí)之決策樹(shù)和隨機(jī)森林
本文主要介紹了機(jī)器學(xué)習(xí)之決策樹(shù)和隨機(jī)森林,詳細(xì)的介紹了實(shí)現(xiàn) 原理機(jī)器實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07TensorFlow人工智能學(xué)習(xí)數(shù)據(jù)合并分割統(tǒng)計(jì)示例詳解
這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)數(shù)據(jù)合并分割及統(tǒng)計(jì)的示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11