Python讀取圖像文件的三種方式:PIL, OpenCV和GDAL

2021-01-07 不睡覺的貓頭鷹

使用PYTHON進行圖像處理的首要步驟便是讀入圖像數據,這裡介紹讀入圖像文件的三種方式,包括Pillow(PIL)、OpenCV和GDAL。

Pillow

Pillow是PIL(Python Imaging Library)的分支,為Python增強了圖像處理能力。可以通過Image.open()函數從文件中讀取圖像數據。

from PIL import Image

img = Image.open("hopper.ppm")

如果讀取成功,則返回Image對象實例img,且具有format, size, mode等屬性,並可通過img.show()進行顯示。

Pillow/PIL通過save函數,在不指定輸出格式的情況下,PIL自動通過文件後綴確定存儲格式。

OpenCV

OPENCV

OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟體庫,通過cv2.imread()、cv2.imshow()、cv2.imwrite()等函數提供圖像文件的讀寫和顯示功能。

img = cv2.imread('messi5.jpg', 0)

cv2.imread()共有兩個參數,第一個參數為圖像文件名稱或路徑,第二個參數是表示讀入方式的標誌,可取值為cv2.IMREAD_COLOR(1,默認參數,讀取彩色圖像)、cv2.IMREAD_GRAYSCALE(0,以灰度模式讀取圖像)、cv2.IMREAD_UNCHANGED(-1,讀取含有alpha通道的圖像)。

其返回值img是一個numpy對象,可以方便地進行數值讀取、矩陣計算等處理。

OpenCV可以通過cv2.imshow或配合matplotlib實現圖像顯示。需要注意的是,通過OpenCV讀入的彩色圖像是BGR模式,而matplotlib採用RGB模式進行顯示,因此需要進行轉換。

GDAL

GDAL

GDAL(Geospatial Data Abstraction Library)是柵格和矢量地理數據的轉換庫,是三種方式中最強大的圖像數據讀入方式,支持的圖像類型最廣泛。

from osgeo import gdal

dataset = gdal.Open(filename, gdal.GA_ReadOnly)

gdal.Open()的返回值dataset,是一個GDALDataset定義的柵格數據模型,包含多個柵格通道和其他元數據信息。

dataset不是一個可以直接顯示的數據類型,可以通過GetRasterBand, ReadAsArray函數轉換後使用matplotlib庫進行圖像顯示。

相關焦點

  • Python 圖像處理 OpenCV (1):入門
    安裝的時候選擇自己喜歡的版本裝就好了,命令如下:# opencv-python 安裝命令pip install opencv-python# opencv-contrib-pythonpip install opencv-contrib-python安裝完成後可以通過以下代碼查看安裝的版本信息:
  • 「Python+cv2」Python安裝opencv及圖像的基本操作
    3、安裝opencvpython環境下opencv的安裝:pip3 install opencv-pythonopencv的基本操作1、導入opencv庫import cv22、讀取圖像並顯示圖像讀取並顯示cv2.waitKey(0)是刷新圖像並一直等待下去,0換成其他整數數字如1000,就是等待1000ms,即1s之後關閉顯示圖像的窗口。
  • Python+OpenCV的基礎圖像處理操作匯總
    通過在CMD(命令提示符)中發出以下命令來安裝opencv python(這是一個用於python的非正式預構建opencv包):opencv-contrib-python(包含main和contrib模塊)opencv-python-headless(與opencv-python相同,但沒有
  • 使用Python+OpenCV實現圖像數據採集
    然而,模型的權重仍然可以在Kaggle上進行訓練,以.h5文件的形式下載(基於Keras/TensorFlow)並加載。在Anaconda或命令提示符中鍵入conda create -n opencv python=3.6這將在Python版本3.6中創建一個名為opencv的新環境,可以用正在使用的任何版本替換它。
  • opencv-python獲取圖像:面向對象與面向過程
    獲取圖像的方式有:1,讀取本地圖片,2,調用筆記本自帶攝像頭或usb攝像頭,3,調用網絡攝像頭。這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)下面讀取一張圖片並顯示
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。
  • 【從零學習OpenCV 4】圖像讀取函數imread
    我們在前面已經見過了圖像讀取函數imread()的調用方式,這裡我們給出函數的原型。函數能夠讀取多種格式的圖像文件,但是在不同作業系統由於使用的編解碼器不同,因此在某個系統中能夠讀取的圖像文件可能在其他系統中就無法讀取。
  • 「python opencv 計算機視覺零基礎實戰」第一節
    前置條件說明:本系列opencv實戰教程將從基礎到實戰,若只是簡單學習完python也可以通過該教程完成一般的機器學習編程;文中將會對很多python的基礎內容進行講解,但由於文章定位的原因將不會贅述過多的基礎內容,基礎內容進行第一次講解後第二次將不會過多贅述,本文主要講解的是opencv相關知識。
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    先將模型文件(.pb 文件)和相應的標籤映射文件複製到本地,後面可能會用到。我認為使用 Docker 應是當今數據科學家的必備技能。在數據科學和機器學習領域,每周都會發布許多新的算法,工具和程序,直接在你的計算機目錄上安裝調試這些代碼、程序會讓系統變得凌亂不堪。為了防止這種情況,我使用 Docker 容器來創建我的數據科學工作區將程序部署在容器中。
  • 基於opencv 的圖像處理入門教程
    /代碼和樣例圖片的地址:https://github.com/ccc013/CodesNotes/tree/master/opencv_noteshttps://github.com/ccc013/CodesNotes/blob/master/opencv_notes/opencv_image_process_tutorial.ipynb
  • 面向Python的OpenCV輕鬆入門——第一章(1)
    例如,假設文件存儲在D: anacondallib目錄下面,則要使用的語句為:>> pip install F:\anaconda\Lib\opencv_python-3.4.3.18-cp37-cp37m-win_amd64.whl安裝完成後,可以在 Anaconda
  • OpenCV-Python 讀取顯示圖像|五
    目標在這裡,你將學習如何讀取圖像,如何顯示圖像以及如何將其保存回去你將學習以下功能:cv.imread(),cv.imshow(),cv.imwrite()(可選)你將學習如何使用Matplotlib顯示圖像使用OpenCV讀取圖像使用cv.imread()函數讀取圖像。圖像應該在工作目錄或圖像的完整路徑應給出。
  • 【從零學習OpenCV】保存和讀取XML和YMAL文件
    除了圖像數據之外,有時程序中的尺寸較小的Mat類矩陣、字符串、數組等數據也需要進行保存,這些數據通常保存成XML文件或者YAML文件。本小節中將介紹如何利用OpenCV 4中的函數將數據保存成XML文件或者YAML文件以及如何讀取這兩種文件中的數據。
  • 【視覺與圖像】Python+OpenCV教程入門篇
    本教程翻譯自OpenCV官方英文教程,按照使用度和難易度翻譯,重新編寫了大量原創內容,將不常用和較難的部分寫成番外篇,淺顯易懂,很easy的辣~每節的源碼、圖片和練習題答案均可在引用處找到噢要安裝OpenCV,只需cmd下的一條指令:pip install opencv-pythonpip是Python的包管理器,如果你還沒安裝Python,強烈推薦安裝Anaconda,它包含了大量的科學計算包,不用後期一個個安裝。即使你已經裝了Python也沒有影響,Anaconda相當於虛擬環境,互不幹擾。
  • python利用opencv實現證件照換底
    opencv今天就給大家介紹一下python利用opencv庫進行藍底換紅底或者白底照片的操作。1.強大的opencv庫說到圖像處理,不得不提opencv庫。它是一個跨平臺的計算機視覺庫,可以運行在不同作業系統上,它由一些列c函數和少量c++函數組成,並提供python,matlab等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。我們這裡用的opencv-python 就是opencv的python API接口。
  • Python下opencv使用筆記(一:簡單操作與幾何變換)
    上次分享了一個關於python下opencv的所有相關資料,詳細可參考下載:珍藏資料-學習OpenCV與計算機視覺-有這些就夠了1.圖像簡單讀取、顯示與儲存首先關於python想說的是,單純的官網下載的python並不大,是一個最初的python,進行一些簡單的操作時可以的,但是當你進行複雜一點的時候,就需要許多第三方的安裝包,比如numpy等等,這些庫安裝進去說起來也不是很複雜,網上有很多教程,但是當許多的包安裝的時候,有的庫包並沒有你的電腦的版本,等等還有許多因素導致你的庫包安裝不進去,想想還是挺麻煩的
  • 【從零學習OpenCV】 視頻數據的讀取&攝像頭的直接調用
    雖然視頻文件是由多張圖片組成的,但是imread()函數並不能直接讀取視頻文件,需要由專門的視頻讀取函數進行視頻讀取,並將每一幀圖像保存到Mat類矩陣中,代碼清單2-27中給出了VideoCapture類在讀取視頻文件時的構造方式。
  • opencv學習記錄1——視頻讀取與寫入
    為了敦促自己的學習計劃和進度,本期作為opencv的學習專項計劃記錄,希望這些記錄能夠為以後的學習提供一些記憶和練習資料,同時,恩公偶為需要的童鞋提供微不足道的幫助和學習計劃
  • 使用Python+OpenCV實現神經網絡預處理人臉圖像的快速指南
    注意:本文中使用的所有靜態圖像都來自 https://imgflip.com/memetemplates圖片載入我們將使用imread()函數加載圖像,指定文件的路徑和mode,第二個參數對於動態運行通道和像素轉換非常重要。