欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python imread函數(shù)詳解

 更新時(shí)間:2021年08月16日 10:20:19   作者:walter_xh  
這篇文章主要介紹了python imread函數(shù)詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

Python 中各種imread函數(shù)的區(qū)別與聯(lián)系

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

先來(lái)看看常用的讀取圖片的方式:

  • 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

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

matplotlib

matplot.image.imread

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

opencv

cv2.imread

使用opencv讀取圖像,直接返回numpy.ndarray 對(duì)象,通道順序?yàn)?strong>BGR ,注意是BGR,通道值默認(rèn)范圍0-255。

skimage

skimage.io.imread: 直接返回numpy.ndarray 對(duì)象,通道順序?yàn)镽GB,通道值默認(rèn)范圍0-255。
caffe.io.load_image: 沒(méi)有調(diào)用默認(rèn)的skimage.io.imread,返回值為0-1的float型數(shù)據(jù),通道順序?yàn)镽GB

關(guān)于圖像的一些說(shuō)明

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

以下是測(cè)試代碼

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

#encoding=utf8
from PIL import Image
import numpy as np
import cv2
import matplotlib.pyplot as plt # plt 用于顯示圖片
import matplotlib.image as mpimg # mpimg 用于讀取圖片
import skimage
import sys
from skimage import io 

#PIL
#相關(guān):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.py
imagepath='test1.jpg'
im1=Image.open(imagepath)
im1=np.array(im1)#獲得numpy對(duì)象,RGB
print(type(im1))
print(im1.shape)

#2 opencv 
im2=cv2.imread(imagepath)
print(type(im2))#numpy BGR
print(im2.shape)#[width,height,3]

#3 matplotlib 類似matlab的方式
im3 = mpimg.imread(imagepath)
print(type(im3))#np.array
print(im3.shape)

#4 skimge 
#caffe.io.load_iamge()也是調(diào)用的skimage實(shí)現(xiàn)的,返回的是0-1 float型數(shù)據(jù)
im4 = io.imread(imagepath)
print(type(im4))#np.array
print(im4.shape)
#print(im4)


# cv2.imshow('test',im4)
# cv2.waitKey()
#統(tǒng)一使用plt進(jìn)行顯示,不管是plt還是cv2.imshow,在python中只認(rèn)numpy.array,但是由于cv2.imread 的圖片是BGR,cv2.imshow 時(shí)相應(yīng)的換通道顯示
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') # 不顯示坐標(biāo)軸
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)

測(cè)試結(jié)果

這里寫(xiě)圖片描述

總結(jié)

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

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

相關(guān)文章

  • pytorch模型預(yù)測(cè)結(jié)果與ndarray互轉(zhuǎn)方式

    pytorch模型預(yù)測(cè)結(jié)果與ndarray互轉(zhuǎn)方式

    今天小編就為大家分享一篇pytorch模型預(yù)測(cè)結(jié)果與ndarray互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python技能樹(shù)共建之python?urllib?模塊

    Python技能樹(shù)共建之python?urllib?模塊

    這篇文章介紹了Python技能樹(shù)共建之python?urllib?模塊,urllib模塊是?Python?標(biāo)準(zhǔn)庫(kù),更多相關(guān)介紹需要的小伙伴可以參考下面文章的詳細(xì)內(nèi)容
    2022-05-05
  • Python如何通過(guò)百度翻譯API實(shí)現(xiàn)翻譯功能

    Python如何通過(guò)百度翻譯API實(shí)現(xiàn)翻譯功能

    這篇文章主要介紹了Python如何通過(guò)百度翻譯API實(shí)現(xiàn)翻譯功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python編程技巧連接列表的八種操作方法

    Python編程技巧連接列表的八種操作方法

    這篇文章主要為大家介紹了Python編程技巧之連接列表的八種操作方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Python中py文件引用另一個(gè)py文件變量的方法

    Python中py文件引用另一個(gè)py文件變量的方法

    下面小編就為大家分享一篇Python中py文件引用另一個(gè)py文件變量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python函數(shù)式編程指南(二):從函數(shù)開(kāi)始

    Python函數(shù)式編程指南(二):從函數(shù)開(kāi)始

    這篇文章主要介紹了Python函數(shù)式編程指南(二):從函數(shù)開(kāi)始,本文講解了定義一個(gè)函數(shù)、使用函數(shù)賦值、閉包、作為參數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Python help()函數(shù)用法詳解

    Python help()函數(shù)用法詳解

    這篇文章主要介紹了Python help()函數(shù)的作用,并舉例說(shuō)明它的詳細(xì)用法,需要的朋友可以參考下
    2014-03-03
  • python中dir函數(shù)用法分析

    python中dir函數(shù)用法分析

    這篇文章主要介紹了python中dir函數(shù)用法,實(shí)例分析了dir函數(shù)的功能及相應(yīng)的使用技巧,需要的朋友可以參考下
    2015-04-04
  • 利用Python模擬谷歌的小恐龍游戲

    利用Python模擬谷歌的小恐龍游戲

    谷歌流量器中有個(gè)很有名的彩蛋:當(dāng)你網(wǎng)絡(luò)出現(xiàn)問(wèn)題時(shí),就會(huì)出現(xiàn)一個(gè)“小恐龍游戲”。本文就主要為大家介紹了如何用Python模擬實(shí)現(xiàn)這一小游戲,感興趣的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • python框架django基礎(chǔ)指南

    python框架django基礎(chǔ)指南

    本文給大家匯總介紹了下python的MVC框架django的一些基礎(chǔ)知識(shí),非常的簡(jiǎn)單實(shí)用,希望對(duì)大家學(xué)習(xí)django能夠有所幫助。
    2016-09-09

最新評(píng)論