python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系詳解
1. cv2.imread()
cv2.imread()讀出的數(shù)據(jù)格式是numpy,默認(rèn)按照f(shuō)lag=1進(jìn)行讀取。
例:
import cv2 img = cv2.imread("img_path") print(img.shape, type(img)) # 顯示圖像 cv2.imshow("demo", img) # 窗口顯示時(shí)間,默認(rèn)0表示無(wú)限 cv2.waitKey() # 按任意鍵銷毀窗口 cv2.destoryWindows("demo") >>>輸出 (345,678,3) <class.'numpy.ndarray'>
1.1 cv2.imread參數(shù)說(shuō)明
flags:讀取圖片的方式,可選項(xiàng)
- ① cv2.IMREAD_COLOR(1):默認(rèn)方式,3通道BGR彩色圖像
- ② cv2.IMREAD_GRAYSCALE(0):?jiǎn)瓮ǖ阑叶葓D像
- ③ cv2.IMREAD_UNCHANGED(-1):原樣返回(使用Alpha通道)
- ④ cv2.IMREAD_ANYDEPTH(2):輸入具有相應(yīng)深度時(shí)返回16位/32位圖像,否則轉(zhuǎn)為8位
- ⑤ cv2.IMREAD_ANYCOLOR(4):以任何可能的顏色格式讀取
返回值:讀取的OpenCV圖像,nparray多維數(shù)組
1.2 注意事項(xiàng)
⑴ OpenCV中彩色圖像使用BGR格式,而PIL、PyQt、matplotlib等庫(kù)使用的是RGB格式。
import cv2 # 方法1:BGR 轉(zhuǎn) RGB img = img[:, :, ::-1] # 方法2:BGR 轉(zhuǎn) RGB img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
⑵ cv2.imread()如果無(wú)法從指定文件讀取圖像,并不會(huì)報(bào)錯(cuò),而是返回一個(gè)空矩陣。
⑶ 在python3中不支持圖片的路徑和文件名為中文或者有空格,當(dāng)必須使用中文可以用cv2.imdecode()處理。
例:
import cv2 imgFile = './images/測(cè)試.jpg' # cv2.imread(imgFile) 讀取失敗但不會(huì)報(bào)錯(cuò) img = cv2.imdecode(np.fromfile(imgFile, dtype=np.uint8), -1)
⑷ 讀取圖像時(shí)默認(rèn)忽略透明通道,但可以使用CV_LOAD_IMAGE_UNCHANGED參數(shù)讀取透明通道。
2. Image.open()
Image.open()返回值是PIL類型格式,可以直接圖片展示,但不能直接讀取其中的像素點(diǎn)值。
例:
from PIL import Image img = Image.open('./image9.jpg') print(img, img.size) img.show() >>>輸出 <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x222AD1D4160> (1920, 1080)
3. cv2.imread()與Image.open()相互轉(zhuǎn)化
3.1 cv2.imread()轉(zhuǎn)成Image.open():Image.fromarray()
import cv2 from PIL import Image img_cv2 = cv2.imread('img_path') # 方法1 img_cv2 = img_cv2[:, :, ::-1] # 方法2 img_cv2 = cv2.cvtColor(img_cv2, cv2.COLOR_BGR2RGB) img_PIL = Image.fromarray(img_cv2)
3.2 Image.open()轉(zhuǎn)成cv2.imread():np.array()
例:
import cv2 from PIL import Image import numpy as np img_PIL = Image.open('img_path') img_cv2 = np.array(img_PIL) # 方法1 img_cv2 = img_cv2[:, :, ::-1] # 方法2 img_cv2 = cv2.cvtColor(img_cv2, cv2.COLOR_RGB2BGR)
總結(jié):cv2.imread()讀出的數(shù)據(jù)格式是numpy,Image.open()返回值是PIL類型格式。
總結(jié)
到此這篇關(guān)于python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系詳解的文章就介紹到這了,更多相關(guān)python cv2.imread()和Image.open()詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3使用urllib模塊制作網(wǎng)絡(luò)爬蟲
本文給大家介紹的是利用urllib模塊通過(guò)指定的URL抓取網(wǎng)頁(yè)內(nèi)容 所謂網(wǎng)頁(yè)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來(lái),保存到本地,有需要的小伙伴可以參考下2016-04-04Python實(shí)現(xiàn)二維數(shù)組輸出為圖片
下面小編就為大家分享一篇Python實(shí)現(xiàn)二維數(shù)組輸出為圖片,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04淺談Python Opencv中g(shù)amma變換的使用詳解
下面小編就為大家分享一篇淺談Python Opencv中g(shù)amma變換的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04OpenCV:imwrite函數(shù)保存圖片問(wèn)題
這篇文章主要介紹了關(guān)于OpenCV:imwrite函數(shù)保存圖片問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11python中opencv K均值聚類的實(shí)現(xiàn)示例
本文主要介紹了python中opencv K均值聚類的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06selenium自動(dòng)化測(cè)試入門實(shí)戰(zhàn)
這篇文章主要介紹了selenium自動(dòng)化測(cè)試入門實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python3實(shí)現(xiàn)ftp服務(wù)功能(客戶端)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)ftp服務(wù)功能,客戶端的相應(yīng)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03