国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python imread函數(shù)詳解

瀏覽:110日期:2022-07-29 08:05:53
Python 中各種imread函數(shù)的區(qū)別與聯(lián)系

最近一直在用python做圖像處理相關的東西,被各種imread函數(shù)搞得很頭疼,因此今天決定將這些imread總結一下,以免以后因此犯些愚蠢的錯誤。如果你正好也對此感到困惑可以看下這篇總結。當然,要了解具體的細節(jié),還是應該 read the fuck code和API document,但貌似python的很多模塊文檔都不是很全,所以只能多看代碼和注釋了。

先來看看常用的讀取圖片的方式: PIL.Image.open scipy.misc.imread scipy.ndimage.imread cv2.imread matplotlib.image.imread skimge caffe.io.load_iamge這些方法可以分為四大家族PIL

PIL.Image.open + numpy scipy.misc.imread scipy.ndimage.imread

這些方法都是通過調(diào)用PIL.Image.open 讀取圖像的信息; PIL.Image.open 不直接返回numpy對象,可以用numpy提供的函數(shù)進行轉換,參考Image和Ndarray互相轉換; 其他模塊都直接返回numpy.ndarray對象,通道順序為RGB,通道值得默認范圍為0-255。

matplotlib

matplot.image.imread

從名字中可以看出這個模塊是具有matlab風格的,直接返回numpy.ndarray格式通道順序是RGB,通道值默認范圍0-255。

opencv

cv2.imread

使用opencv讀取圖像,直接返回numpy.ndarray 對象,通道順序為BGR ,注意是BGR,通道值默認范圍0-255。

skimage

skimage.io.imread: 直接返回numpy.ndarray 對象,通道順序為RGB,通道值默認范圍0-255。 caffe.io.load_image: 沒有調(diào)用默認的skimage.io.imread,返回值為0-1的float型數(shù)據(jù),通道順序為RGB

關于圖像的一些說明

可以使用matplotlib的pyplot模塊的show也可以使用cv2的imshow方法,對于這些方法只要你傳入的參數(shù)是numpy.ndarray(通道值范圍0-255) 就可以正常顯示,不存在區(qū)別,這也可以看出numpy在python中的重要地位;但是cv2.imshow方法由于它針對的是cv2的imread 所以它內(nèi)部會做通道順序的變化,傳入為BGR轉換為RGB,所以你如果傳入RGB顯示的就是BGR了。廢話說完了,看代碼。

以下是測試代碼

運行環(huán)境為windows10+python3.6

#encoding=utf8from PIL import Imageimport numpy as npimport cv2import matplotlib.pyplot as plt # plt 用于顯示圖片import matplotlib.image as mpimg # mpimg 用于讀取圖片import skimageimport sysfrom skimage import io #PIL#相關:scipy.misc.imread, scipy.ndimage.imread#misc.imread 提供可選參數(shù)mode,但本質(zhì)上是調(diào)用PIL,具體的模式可以去看srccode或者document#https://github.com/scipy/scipy/blob/v0.17.1/scipy/misc/pilutil.pyimagepath=’test1.jpg’im1=Image.open(imagepath)im1=np.array(im1)#獲得numpy對象,RGBprint(type(im1))print(im1.shape)#2 opencv im2=cv2.imread(imagepath)print(type(im2))#numpy BGRprint(im2.shape)#[width,height,3]#3 matplotlib 類似matlab的方式im3 = mpimg.imread(imagepath)print(type(im3))#np.arrayprint(im3.shape)#4 skimge #caffe.io.load_iamge()也是調(diào)用的skimage實現(xiàn)的,返回的是0-1 float型數(shù)據(jù)im4 = io.imread(imagepath)print(type(im4))#np.arrayprint(im4.shape)#print(im4)# cv2.imshow(’test’,im4)# cv2.waitKey()#統(tǒng)一使用plt進行顯示,不管是plt還是cv2.imshow,在python中只認numpy.array,但是由于cv2.imread 的圖片是BGR,cv2.imshow 時相應的換通道顯示plt.subplot(221)plt.title(’PIL read’)plt.imshow(im1)plt.subplot(222)plt.title(’opencv read’)plt.imshow(im2)plt.subplot(223)plt.title(’matplotlib read’)plt.imshow(im3)plt.subplot(224)plt.title(’skimage read’)plt.imshow(im4)#plt.axis(’off’) # 不顯示坐標軸plt.show()##################################### cmd output################################# <class ’numpy.ndarray’># (851, 1279, 3)# <class ’numpy.ndarray’># (851, 1279, 3)# <class ’numpy.ndarray’># (851, 1279, 3)# <class ’numpy.ndarray’># (851, 1279, 3)

測試結果

python imread函數(shù)詳解

總結

雖然python中沒有顯示的數(shù)據(jù)類型聲明,但是在編程的過程中自己必須得清楚數(shù)據(jù)類型是什么,否則就有可能犯一些愚蠢的錯誤。

到此這篇關于python imread函數(shù)詳解的文章就介紹到這了,更多相關python imread函數(shù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产成人精品一区二区视频 | 男人的天堂黄色 | 羞羞一区二区三区四区片 | 91香焦国产线观看看免费 | 国产精品欧美亚洲韩国日本 | 成年免费网站 | 92手机看片福利永久国产 | 欧美日韩高清不卡一区二区三区 | 台湾精品视频在线播放 | 日本aa级片 | 日韩精品中文字幕视频一区 | 日韩一级免费毛片 | 亚洲免费人成在线视频观看 | 日韩亚洲一区中文字幕 | 日本一级特黄大一片免 | 欧美性生交大片免费看 | 日韩1页| 久在线视频 | 香蕉三级 | 欧美日韩ay在线观看 | 久久精品成人欧美大片免费 | 日韩一级片播放 | 国产成人午夜精品免费视频 | 免费观看欧美成人h | 欧美成人aa | 7777视频| 日韩精品小视频 | 丝袜美腿精品一区二区三 | 中文字幕在线精品 | 女bbbbxxxx毛片视频0 | 最近韩国日本免费免费版 | 国产精品亚洲第一区二区三区 | 成人在线播放视频 | 成人在免费视频手机观看网站 | 午夜精品尤物福利视频在线 | 久久综合给会久久狠狠狠 | 亚洲一级特黄特黄的大片 | 女人张开双腿让男人桶爽免 | 国产成人精品综合在线 | 欧美激情欧美狂野欧美精品免费 | 亚洲专区在线视频 |